Les deux révisions précédentes Révision précédente | |
informatique:divers:deplacer_fichiers_linux [2023/05/31 17:42] – [1. Copier un dossier et son contenu] Cédrix | informatique:divers:deplacer_fichiers_linux [2023/05/31 19:56] (Version actuelle) – [Supprimer les fichiers sources] Cédrix |
---|
| ====== 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> |