122 lines
7.0 KiB
Markdown
122 lines
7.0 KiB
Markdown
# 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** ....
|
|
|
|
## - 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.
|
|
|
|
<u>Syntaxe sur la source quant il s'agit d'un dossier</u>
|
|
|
|
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 :
|
|
|
|
```BASH
|
|
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.
|
|
|
|
## - Copier un dossier et son contenu avec archive des fichiers supprimés
|
|
```BASH
|
|
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.
|
|
|
|
## - 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**
|
|
|
|
```
|
|
rsync --delete -az -e ssh root@dskval001:/home/valentin/ /media/disk_21/valentin/sauvegarde
|
|
```
|
|
|
|
## - 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
|
|
```
|
|
|
|
```bash
|
|
- tmp
|
|
- .Trash/
|
|
- .rsync-filter
|
|
- .cache/
|
|
- *.bak
|
|
- log
|
|
- photos/thumb
|
|
- lost+found/
|
|
- *~
|
|
- .*
|
|
``` |