137 lines
7.2 KiB
Plaintext
137 lines
7.2 KiB
Plaintext
====== rsync - copie robuste des fichiers ======
|
|
|
|
{{ :informatique:divers:pasted:20211101-193441.png}}
|
|
|
|
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** ....
|
|
|
|
===== - Copier un dossier et son contenu =====
|
|
|
|
<code>
|
|
rsync -avP /chemin/source/ /chemin/destination/
|
|
</code>
|
|
|
|
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 :
|
|
|
|
<code BASH>
|
|
rsync --remove-source-files --prune-empty-dirs -av /chemin/source/ /chemin/destination/
|
|
</code>
|
|
|
|
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 :
|
|
|
|
<code>
|
|
rsync --delete -av /chemin/source/ /chemin/destination/
|
|
</code>
|
|
|
|
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.
|
|
|
|
===== - Copier un dossier et son contenu avec archive des fichiers supprimés =====
|
|
|
|
<code BASH>
|
|
rsync -avP \
|
|
--delete --backup_dir=/data/tmp_backup \
|
|
src/bar /data/tmp
|
|
</code>
|
|
|
|
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.
|
|
|
|
|
|
|
|
===== - 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 à sauvegarder
|
|
* ''root'' est administrateur du poste **dskval001**
|
|
* ''sauvegarde'' est le dossier de sauvegarde
|
|
* ''/home/valentin'' est le dossier à sauvegarder sur le poste **dskval001**
|
|
|
|
<code>
|
|
rsync --delete -az -e ssh root@dskval001:/home/valentin/ /media/disk_21/valentin/sauvegarde
|
|
</code>
|
|
|
|
|
|
|
|
|
|
===== - Divers =====
|
|
|
|
Mettre à jour :
|
|
|
|
<code>
|
|
rsync -ruP --del --force\
|
|
--log-file=/root/famille.log\
|
|
--ignore-errors\
|
|
--filter="merge /root/rsync_exclusion" \
|
|
/run/media/gerard/home/famille /media/backup
|
|
</code>
|
|
|
|
|
|
|
|
<code bash sync_exclusion>
|
|
- tmp
|
|
- .Trash/
|
|
- .rsync-filter
|
|
- .cache/
|
|
- *.bak
|
|
- log
|
|
- photos/thumb
|
|
- lost+found/
|
|
- *~
|
|
- .*
|
|
</code> |