rsync - copie robuste des fichiers
Rsync permet de copier des fichiers en local ou en distance. Son algorithme de copie permet de réaliser des copies de backup, du mirroring et des copies standards.
Rsync fonctione sur le schéma rsync <options> <source> <destination>
L'option -P (association de –progress et –partial) est utilisée dans les commandes suivantes afin de pouvoir reprendre un transfert de fichier si le précédent a été interrompu et afficher à l'écran la progression des fichiers.
L'option -v permet d'afficher des informations détaillées à l'écran.
L'option -h permet de simplifier l'affichage des tailles d'octets en ko, Mo, Go ….
1. Copier un dossier et son contenu
rsync -avP /chemin/source/ /chemin/destination/
Dans cet exemple, remplacez /chemin/source/
par le chemin absolu du dossier source que vous souhaitez synchroniser, et /chemin/destination/
par le chemin absolu du dossier de destination que vous souhaitez synchroniser.
L'option -a
est utilisée pour le mode archivage, qui conserve les attributs des fichiers lors de la copie ou de la synchronisation.
L'option -v
active le mode verbeux, qui affiche des informations supplémentaires sur les fichiers en cours de traitement.
L'option -P
, affiche des informations détaillées sur les fichiers en cours de transfert, y compris leur taille, le temps estimé restant, la vitesse de transfert et le pourcentage accompli. Cela peut être utile pour surveiller le progrès de la copie ou de la synchronisation.
Les fichiers ou dossier supprimés dans la source, ne seront pas modifié dans la destination.
Syntaxe sur la source quant il s'agit d'un dossier
Ne pas confondre /chemin/source
et /chemin/source/
.
rsync -avz /chemin/source/ /chemin/destination/
copie le contenu de /chemin/source/
dans /chemin/destination/
.
rsync -avz /chemin/source /chemin/destination/
copie le contenu de /chemin/source
dans /chemin/destination/
. Le dossier /chemin/destination/source
sera créé.
Supprimer les fichiers et dossiers sources
Pour supprimer les fichiers du dossier source après la copie avec rsync, vous pouvez utiliser l'option –remove-source-files
ou -r
lors de l'exécution de la commande. Voici un exemple de commande pour effectuer cette opération :
rsync --remove-source-files --prune-empty-dirs -av /chemin/source/ /chemin/destination/
Dans cet exemple, remplacez /chemin/source/
par le chemin absolu du dossier source que vous souhaitez copier, et /chemin/destination/
par le chemin absolu du dossier de destination où vous souhaitez copier les fichiers.
L'option –remove-source-files
indique à rsync de supprimer les fichiers source après les avoir copiés. L'option –prune-empty-dirs
supprime également les dossiers vides du dossier source après la copie.
L'option -a
est utilisée pour activer le mode archivage, ce qui permet de conserver les attributs des fichiers (permissions, dates, etc.) lors de la copie. L'option -v
est utilisée pour afficher les détails de la progression de la copie.
Veuillez noter que cette option supprimera définitivement les fichiers du dossier source. Assurez-vous donc d'avoir une sauvegarde appropriée avant d'exécuter cette commande.
Supprimer les fichiers et dossiers de destination qui n'existent pas dans la source
Pour supprimer les fichiers et dossiers de destination qui n'existent pas dans la source lors de la synchronisation avec rsync, vous pouvez utiliser l'option –delete
lors de l'exécution de la commande. Voici un exemple de commande :
rsync --delete -av /chemin/source/ /chemin/destination/
Dans cet exemple, remplacez /chemin/source/
par le chemin absolu du dossier source que vous souhaitez synchroniser, et /chemin/destination/
par le chemin absolu du dossier de destination que vous souhaitez synchroniser.
L'option –delete
indique à rsync de supprimer les fichiers et dossiers de destination qui n'existent pas dans la source. Ainsi, après la synchronisation, le contenu de la destination sera identique à celui de la source, avec la suppression des fichiers et dossiers qui ne sont plus présents dans la source.
L'option -a
est utilisée pour activer le mode archivage, ce qui conserve les attributs des fichiers (permissions, dates, etc.) lors de la synchronisation. L'option -v
est utilisée pour afficher les détails de la progression de la synchronisation.
Il est important de noter que l'option –delete
peut entraîner la suppression de fichiers et de dossiers de manière irréversible. Assurez-vous donc de comprendre les conséquences de cette option et d'avoir une sauvegarde appropriée avant d'exécuter la commande.
2. Copier un dossier et son contenu avec archive des fichiers supprimés
rsync -avP \ --delete --backup_dir=/data/tmp_backup \ src/bar /data/tmp
Copie les fichiers et sous-dossiers de src/bar
dans le dossier /data/tmp/bar
, et en supprimant les fichiers dans /data/tmp/bar
qui ne sont pas présent dans src/bar
.
L'option –delete
suprimer les fichiers dans la destination, alors qu'ils ne sont pas présent dans la source. En complément l'option –backup_dir
déplace les fichiers supprimés dans un autre dossier.
3. Sauvegarder sur NAS
Faut-il copier de l'ordinateur vers le NAS, ou copier depuis le NAS ? En d'autres termes, faut-il autoriser le NAS à se connecter sur l'ordinateur ou autoriser l'ordinateur à accéder au NAS ? La question se pose en terme de droits d'accès.
En autorisant l'ordinateur à accéder au NAS, j'autorise tous les programmes s'exécutant sur cet ordinateur à accéder aux fichiers du NAS. Les logiciels malveillants utilsent cette technique pour modifier ou supprimer les sauvegardes.
En autorisant le NAS à accéder aux ordinateurs, je concentre le pouvoir d'accès à tous les fichiers à une entité, le NAS. C'est génant. De surcroit, il faudra veiller que lorsque l'ordinateur n'est pas accessible, de ne pas enclencher la suppression des fichiers.
La bonne réponse est de copier de l'ordinateur vers le NAS. En effet, la connexion au NAS s'effectura avec un compte qui n'aura accès qu'à ses fichiers.
Voici un exemple de copie de l'ordinateur vers le NAS.
1. Copier la clé de l'administrateur du NAS vers le compte root du PC distant.
2. Exécuter depuis le NAS le script ci-dessous.
dskval001
est le poste où se trouve le dossier à sauvegarderroot
est administrateur du poste dskval001sauvegarde
est le dossier de sauvegarde/home/valentin
est le dossier à sauvegarder sur le poste dskval001
rsync --delete -az -e ssh root@dskval001:/home/valentin/ /media/disk_21/valentin/sauvegarde
4. Divers
Mettre à jour :
rsync -ruP --del --force\ --log-file=/root/famille.log\ --ignore-errors\ --filter="merge /root/rsync_exclusion" \ /run/media/gerard/home/famille /media/backup
- sync_exclusion
- tmp - .Trash/ - .rsync-filter - .cache/ - *.bak - log - photos/thumb - lost+found/ - *~ - .*