Vous devez faire une mise à jour de certains fichiers dans une arborescence, mais backuper les fichiers un par un est fastidieux ? Voici une astuce pour aller plus rapidement.
- Se placer dans le répertoire des fichiers originaux.
- Créer une archive en utilisant la liste des nouveaux fichiers.
Exemple :
delovan@x-301:$ cd /path/fichiers/originaux
delovan@x-301:$ tar czfv /backup/backup.tar.gz $(find /path/fichiers/maj -type f | cut -d"/" -f 5-)
Notez l'utilisation du cut -f 5 qui permet d'éliminer de la sortie de find le chemin absolu. Notez également le -type f qui permet de ne pas sauvegarder les répertoires en plus des fichiers qu'ils contiennent Attention, il y a deux faiblesses pour ce script :
- Si la liste des fichiers est trop longue, l'archive ne pourra pas être créé et le système vous jettera avec un too many arguments
- Si un répertoire est vide, il ne sera pas backupé (mais est-ce réellement important ?)
Dernière chose, lors du remplacement des fichiers, il y a une option peu connue de la commande cp permettant de backuper les fichiers originaux avant de les remplacer. Il s'agit de l'option --backup (ou -b). Cela créera un fichier backup avec un tilde (~) à la fin. Vous pouvez spécifier le suffixe avec --suffixe (ou -S). Exemple :
delovan@x-301:$ ls -al
total 0
delovan@x-301:$ touch original
delovan@x-301:$ mkdir copie
delovan@x-301:$ ls
copie original
delovan@x-301:$ cp original copie/
delovan@x-301:$ ls copie/
original
delovan@x-301:$ cp --backup original copie/
delovan@x-301:$ ls copie/
original original~
delovan@x-301:$ cp --backup --suffix=".$(date +%Y%m%d%H%M)" original copie/
delovan@x-301:$ ls copie/
original original~ original.201107261128
Comme d'habitude, je vous laisse le man pour plus d'informations. Ah, et tant qu'a faire, utilisez donc des alias :
alias cpb="cp --backup --suffix=".$(date +%Y%m%d%H%M)""