Je ne sais même pas si cela est facilement possible, mais j'aimerais répertorier, si possible, les fichiers récemment supprimés d'un répertoire.
Je recherche une solution ne nécessitant pas la création d'un fichier temporaire contenant un instantané de la structure de répertoire d'origine à comparer, car l'accès en écriture n'est peut-être pas toujours disponible. Edit: S'il est possible d'obtenir le même résultat en stockant l'instantané dans une variable Shell au lieu d'un fichier, cela résoudrait mon problème.
Quelque chose comme:
find /some/directory -type f -mmin -10 -deletedFilesOnly
Edit: OS: J'utilise Ubuntu 14.04 LTS, mais les commandes s’exécuteraient probablement dans une variété de boîtes Linux ou de conteneurs Docker, la plupart ou la totalité devant utiliser ext4
, et auxquels Je n'aurais probablement pas accès à des modifications.
Vous pouvez utiliser l'utilitaire debugfs
,
debugfs est un système de fichiers simple à utiliser basé sur RAM spécialement conçu à des fins de débogage
Tout d’abord, lancez debugfs /dev/hda13
dans votre terminal (en remplaçant /dev/hda13
par votre propre disque/partition).
(REMARQUE: vous pouvez trouver le nom de votre disque en exécutant df /
dans le terminal).
Une fois en mode débogage, vous pouvez utiliser la commande lsdel
pour répertorier les inodes correspondant aux fichiers supprimés.
Lorsque les fichiers sont supprimés sous Linux, ils ne sont plus liés mais leurs inodes (Adresses sur le disque où le fichier est présent) ne sont pas supprimés
Pour obtenir les chemins de ces fichiers supprimés, vous pouvez utiliser debugfs -R "ncheck 320236"
en remplaçant le numéro par votre inode particulier.
Inode Pathname
320236 /path/to/file
À partir de là, vous pouvez également inspecter le contenu des fichiers supprimés avec cat
. (REMARQUE: vous pouvez également récupérer d'ici si nécessaire).
Great post sur ce ici .
Merci pour vos commentaires et réponses les gars. debugfs
semble être une solution intéressante aux exigences initiales, mais c’est un peu exagéré pour la solution simple et légère que je cherchais; si je comprends bien, le noyau doit être construit avec le support debugfs
et le répertoire cible doit être dans un montage debugfs
. Malheureusement, cela ne fonctionnera pas vraiment pour mon cas d'utilisation; Je dois être capable de fournir une solution pour les noyaux et les répertoires "basiques" existants.
Comme cela semble pratiquement impossible à réaliser, j'ai pu négocier et assouplir les exigences pour répertorier le montant des fichiers récemment supprimés d'un répertoire, de manière récursive si possible.
Voici la solution que j'ai finalement mise en place:
find
canalisée dans wc
pour compter le nombre initial de fichiers dans le répertoire cible (de manière récursive). Le résultat peut ensuite être facilement stocké dans une variable shell ou script sans nécessiter un accès en écriture au système de fichiers.DEL_SCAN_ORIG_AMOUNT=$(find /some/directory -type f | wc -l)
DEL_SCAN_NEW_AMOUNT=$(find /some/directory -type f | wc -l)
DEL_SCAN_DEL_AMOUNT=$(($DEL_SCAN_ORIG_AMOUNT - $DEL_SCAN_NEW_AMOUNT));
DEL_SCAN_ORIG_AMOUNT=$DEL_SCAN_NEW_AMOUNT
if [ $DEL_SCAN_DEL_AMOUNT -gt 0 ]; then echo "$DEL_SCAN_DEL_AMOUNT deleted files"; fi;
Malheureusement, cette solution ne signale rien si le même nombre de fichiers a été créé et supprimé au cours d'un intervalle, mais ce n'est pas un problème énorme pour mon cas d'utilisation.
Pour contourner ce problème, je devrais stocker la liste des fichiers au lieu du nombre, mais je n'ai pas réussi à le faire avec des variables Shell. Si quelqu'un pouvait comprendre cela, je m'aiderais immensément, car cela satisferait aux exigences initiales!
J'aimerais aussi savoir si quelqu'un a des commentaires sur l'une ou l'autre de ces approches.