4 votes

Y a-t-il une commande qui répertorie tous les fichiers que j'ai modifiés cette année?

Je veux répertorier tous les fichiers que j'ai modifiés cette année et les sauvegarder. Est-ce que quelqu'un sait s'il existe une commande pour les lister ? Merci d'avance.

17voto

Zakaria Points 175

Si vous voulez trouver des fichiers, la commande find est un outil puissant. Vous pouvez parcourir un répertoire et afficher les chemins de tous les fichiers qui correspondent à certains tests :

# trouver tous les fichiers dans /some/directory dont le nom commence par 'project_b'
find /some/directory -iname 'project_b*'

# trouver tous les fichiers dans /some/directory qui sont possédés par l'utilisateur 'joe'
find /some/directory -user joe

# trouver tous les fichiers dans /some/directory dont le nom commence par 'project_b'
# mais qui ne sont *pas* possédés par l'utilisateur 'joe'
find /some/directory -iname 'project_b*' -and -not -user joe

Pour obtenir la date de la dernière modification d'un fichier (ou plus précisément, la dernière modification du contenu d'un fichier), vous pouvez vérifier le timestamp mtime. find a un test pour mtime :

# trouver tous les fichiers dont le mtime remonte à moins de 365 jours
find /some/directory -mtime -365

Jusqu'à présent, cela vous donne une liste de tous les fichiers que vous souhaitez sauvegarder. Maintenant, pour la sauvegarde elle-même. find propose une option appelée -exec qui applique une commande à chaque fichier trouvé :

find /some/directory -iname '*.txt' -exec cp {} /somewhere/else \;

Si la commande find trouve test.txt, other.txt et something.txt, la partie -exec exécuterait :

cp test.txt /somewhere/else
cp other.txt /somwhere/else
cp something.txt /somewhere/else

Comme vous pouvez probablement le voir, le {} est remplacé par le fichier en question.

ÉDIT : Vous aurez sûrement besoin de trouver une meilleure solution que simplement cp pour la sauvegarde elle-même, car cp se contenterait de copier chaque fichier dans /somewhere/else sans conserver la structure des répertoires.

En général, un programme de sauvegarde dédié pourrait être un meilleur choix.

5voto

En supposant que vous souhaitiez limiter la date à l'année en cours, vous pourriez utiliser -newermt avec la date.

Cela recherchera dans le répertoire actuel tous les fichiers après le 1er novembre 2016 et les copiera dans /cible tout en maintenant la structure des répertoires.

find . -newermt "2016-11-01 00:00:00" -exec cp --parents {} /cible \;

Le --parents ajouté à la commande cp vous permet de copier les fichiers en conservant les dossiers dans lesquels ils se trouvent.

Par exemple...

ubuntu@ubuntu-xenial:~$ ls
percona-release_0.1-4.xenial_all.deb  t  t2  testdir  testfile2.vm  testfile.vm
ubuntu@ubuntu-xenial:~$ cp --parents t/output.txt testdir/
ubuntu@ubuntu-xenial:~$ ls testdir/
directory2  t

Lorsque j'ai copié t/output.txt dans testdir/, cela a créé le dossier t à l'intérieur de testdir/ puis a copié le fichier.

2voto

Ani Menon Points 131

Pour répertorier tous les fichiers modifiés cette année ainsi que ses détails:

find / -mtime -365 -ls

Cela affichera tout ce qui date des 365 derniers jours.

Pour afficher uniquement les fichiers réguliers, ajoutez -type f à la commande ci-dessus.

Pour obtenir une liste de tous les fichiers modifiés (avec le chemin complet):

find / -mtime -365

Vous pouvez sauvegarder ces fichiers n'importe où en utilisant cp ou scp, etc.

Ajoutez -printf "%f\n" à la fin de la commande pour n'afficher que les noms de fichiers.

1voto

sudodus Points 39902

J'utilise quelques alias

alias last-24-hours='sudo find * -ctime -1 -type f'
alias last-week='sudo find * -ctime -7 -type f'

et vous pouvez créer un alias

alias last-year='sudo find * -ctime -365 -type f'

mais cela produira probablement une liste très longue.

-o-

Si vous souhaitez une vue graphique, vous pouvez utiliser baobab, pour voir où il y a beaucoup de données (et où vous pourriez faire du 'nettoyage' avant la sauvegarde).

-o-

Une alternative est d'utiliser un outil qui peut faire une sauvegarde incrémentielle, par exemple rsync. Il trouvera automatiquement ce qui doit être ajouté ou remplacé dans la sauvegarde.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X