Gnu/Linux
SSH
Debian
Ubuntu
Bash
Réseaux
il y a 7 ans citizenz7 0 commentaire 4560 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.
Blog d'un geek quinqua nivernais fan d'ovalie, de linuxerie, de musique et de Net
@Kilenge22 De rien ;)...
citizenz
19-08-2024
Salut et merci vraiment ...
Kilenge22
18-08-2024
@Denny, c'est à dire ?...
citizenz
10-08-2024
Vous, vous avez une idée derrière la main, j'en mettrais ma tête au feu ! (Kaamelott, Livre V, Perceval de Sinope)