Comme SleighBoy l'a dit, rsync est définitivement l'outil que vous recherchez. Comme il peut être effrayant au premier abord, en raison de ses nombreuses options, je vais vous suggérer les plus importantes, en fonction de vos besoins. La syntaxe de base pour les sauvegardes locales est :
rsync [OPTION..] SRC.. DST
En général, le --archive/-a
est utilisée car elle englobe d'autres options communes telles que --recursive
et des options pour préserver les permissions des fichiers.
Une option que vous Ne le fais pas. doivent utiliser est --delete
parce que sinon rsync supprimera tous les fichiers que est dans le DST de destination mais n'est pas dans les sources SRT.
Vous voulez probablement aussi l'option --relative/-R
. Il permet l'utilisation de chemins relatifs. Extrait de la page de manuel :
...cela signifie que les noms de chemin complets spécifiés sur la ligne de commande sont envoyés au serveur plutôt que les dernières parties des noms de fichiers. Ceci est particulièrement utile lorsque vous souhaitez envoyer plusieurs répertoires différents en même temps. Par exemple, si vous utilisez cette commande :
rsync -av /foo/bar/baz.c /tmp/
... cela créerait un fichier nommé baz.c dans /tmp/ . Si à la place vous utilisez
rsync -avR /foo/bar/baz.c /tmp/
alors un fichier nommé /tmp/foo/bar/baz.c sera créé - le nom complet du chemin est préservé. Pour limiter la quantité d'informations sur le chemin qui est envoyée, vous pouvez insérer un point et une barre oblique dans le chemin source, comme ceci :
rsync -avR /foo/./bar/baz.c remote:/tmp/
Cela créerait /tmp/bar/baz.c sur la machine distante.
Vous devez également avoir l'option :
--exclude=PATTERN
Une option très pratique est --dry-run
qui ne fait que simuler le transfert. Vous pouvez l'utiliser pour tester vos commandes rsync.
Les options suivantes peuvent être utilisées pour rendre le processus de sauvegarde verbeux :
--stats --verbose --human-readable --progress
En résumé, si vous avez besoin de sauvegarder le dossier /home/user
dans le dossier /media/backup
en excluant les dossiers /home/user/lib
y /home/user/dir1/dir2
alors vous pouvez utiliser :
rsync -aRvh --exclude=/home/user/lib --exclude=/home/user/dir1/dir2 /home/user /media/backup
qui recréera toute la hiérarchie des répertoires de /home/user
en /media/backup
.