abonnel-siteweb/data/pages/informatique/divers/deplacer_fichiers_linux.txt

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>