9 oct. 2024 | Connexion

Blog

Utiliser rsync (+ ssh et sudo) pour copier facilement vos données

Utiliser rsync (+ ssh et sudo) pour copier facilement vos données

Gnu/Linux
SSH Debian Ubuntu Bash Réseaux

il y a 7 ans citizenz7 0 commentaire 4438 lectures

Le wiki Ubuntu nous dit :

rsync (pour remote synchronization ou synchronisation à distance), est un logiciel de synchronisation de fichiers.
Il est fréquemment utilisé pour mettre en place des systèmes de sauvegarde distante.
rsync travaille de manière unidirectionnelle c'est-à-dire qu'il synchronise, copie ou actualise les données d'une source (locale ou distante) vers une destination (locale ou distante) en ne transférant que les octets des fichiers qui ont été modifiés.

Mettons tout cela en place sur notre Debian :

sudo apt install rsync

Il vous faut également ssh (sudo apt install ssh).

Voici un exemple assez complet de rsync :

rsync -av --progress --delete --stats --human-readable -e 'ssh -p xxxx' user@serveurdistant.fr:/home/user/* /home/user/

-a : c'est l'option de la "mort-qui-tue". En fait ça fait tout (ou presque). C'est un moyen rapide de dire que vous voulez la récursivité et préserver pratiquement tout. C'est équivalent aux optissn combinées -rlptgoD.
-v : verbeux
--progress : vous indique la progression de la copie/transfert
--stats : affichage de stats sur le transfert des fichiers
--human-readable : lecture "humaine" des chiffres. Idem à l'option ls -h (transforme en KO, MO, GB, ...)
- e : spécifie un shell distant

Il existe une autre option bien pratique :

 --delete : cette option demande à rsync d'effacer tous les fichiers superflus côté réception (ceux qui ne sont pas du côté envoi); uniquement pour les répertoires synchronisés. Attention toutefois à l'utilser correctement ...

Vous avez "la totale" des options rsync ici :

http://www.delafond.org/traducmanfr/man/man1/rsync.1.html

Résultat ?

Avec la commande utilisée plus haut, une fois rentré le mot de passe de l'utilisateur distant (en ayant précisé un éventuel port ssh au cas où le serveur ssh ne tournerait pas sur le traditionnel port 22), rsync va "copier" tous les fichiers du répertoire /home/user (/home/user/*) depuis le serveur distant VERS votre nouveau serveur dans le répertoire /home/user.

Il peut arriver que certains répertoires ou fichiers ne puissent être récupérés pour des questions de droits. Il va alors falloir, sur le serveur distant, configurer sudo

Sur le serveur distant, si sudo n'est pas installé :

sudo apt install sudo

Il faut configurer sudo :

sudo visudo

Nous allons rajouter dans le fichier la ligne suivante (où vous voulez) :

user ALL= NOPASSWD:/usr/bin/rsync

Evidemment, changez "user" par votre véritable nom/pseudo... C'est le truc con qui arrive quand on fait des copier/coller. Je dis ça, car je suis le roi du "Ca marche pas... pourquoi ... Oh M.... ! J'ai pas changé user / mondomaine.com !"

Puis on va utiliser l'option "--rsync-path" pour préciser à rsync de démarrer avec l'option sudo :

rsync -av --progress --stats --human-readable --rsync-path="sudo rsync" -e "ssh -p xxxx" useronremoteserver@remoteserver:/data/to/sync /archive/data/

Et hop, là, plus de soucis on récupère tous les répertoires et fichiers.

0 commentaire


Nb d'articles actifs : 50 | Nb de commentaires : 39 | Nb de catégories : 8 | Nb de tags : 32 | Nb total de lectures : 217 814
2024 citizenz.info • Some rights reserved GPLv3 • Version 3.3.5

Et deux jus de pomme qui piquent ! (Kaamelott, Livre I, 20 : La dent de requin)