Outils pour utilisateurs

Outils du site


linux:rsync (lu 29909 fois)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
linux:rsync [04-04-2013 22:06]
127.0.0.1 modification externe
linux:rsync [05-01-2021 15:04] (Version actuelle)
edmc73 [Performance]
Ligne 1: Ligne 1:
 ====== rsync ====== ====== rsync ======
 +
 +===== Usage courant =====
 +
 +Pour copier simplement des fichiers d'un serveur à l'autre, vous pouvez utiliser **rsync** qui est plus rapide que **scp** et qui en plus permet de préserver les informations de propriétaire des fichiers.
 +
 +Pour copier un fichier ou dossier 
 +
 +  rsync -avzP [SOURCE] [DESTINATION]
 +  rsync -a /home/users toto@serveur:/sauvegarde/.
 +  rsync -avP tata@serveur:/var/archives/mysql.tar.gz /var/archive/.
 +
 +  * ''-a'' est le mode archive qui remplace les options ''-rlptgoD'' recursive / copie liens symboliques / copie les permissions / copie la date et heure / copie le groupe / copie le propriétaire / copie les fichiers spéciaux
 +  * ''-v'' est le mode verbeux 
 +  * ''-z'' permet la compression pour utiliser moins de bande passante
 +  * ''-P'' permet d'afficher la progression de transfert
 +
 +Ici seul l'option ''-a'' est importante.
 +
 +Si votre source contient des liens physiques (hard link), alors ajoutez l'option ''-H''
 +
 +Si votre serveur de destination a un port ssh spécifique (ex: 2222)
 +  rsync -avP -e "ssh -p 2222" user@serveur:/path/to/files/ /local/path/
 +
 +===== Sous Windows =====
 +
 +Télécharger **cwRsync** => https://www.itefix.net/cwrsync#
 +
 +Parametrer les variables d'environnement, lancer dans un terminale le script cwrsync.cmd
 +
 +  c:\Program Files\cwRsync\cwrsync.cmd
 +
 +Comme **rsync** est un programme unix à la base, on ne peut pas spécifier un chemin avec c:\ car les caractères '':'' et ''\'' seront interprétés pour autre chose.
 +
 +Pour accèder au lecteur C:, il faut écrire ''/cygdrive/c'' et remplacer les back slash par des slashs
 +
 +Exemple:
 +  rsync -avi /cygdrive/c/work/ /cygdrive/d/work/doc/
  
 ===== Serveur ===== ===== Serveur =====
Ligne 49: Ligne 86:
 Pour résoudre ce problème, j'ai simplement fait un  Pour résoudre ce problème, j'ai simplement fait un 
   chown nobody.nogroup repertoire_de_sauvegarde   chown nobody.nogroup repertoire_de_sauvegarde
-   
  
 +===== Déplacement de gros volume avant un rsync =====
 +
 +Initialement pour synchroniser on lance la commande
 +  rsync -a dossier/ serveur:dossier/
 +
 +Puis un jour on veut déplacer nos données sur la source et on synchronise
 +  mv dossier/fichierA dossier/fichierB
 +  rsync -a dossier/ serveur:dossier/
 +Et là c'est le drame. Il retransfère le fichierB.
 +
 +L'astuce c'est d'utiliser l'équivalence entre ''mv a b'' et ''ln a b; rm a'', mais on va rajouter un rsync entre les deux.
 +
 +  cp -al dossier/fichierA dossier/fichierB
 +  rsync -aH dossier/ serveur:dossier/
 +  rm dossier/fichierA
 +  rsync -aH --delete dossier/ serveur:dossier/
 +
 +J'utilise ''cp -al'' et non ''ln'', car ça permet de conserver les permissions et de faire le machin recursivement pour un répertoire si c'est un répertoire qui est bougé.
 +
 +Et comme ça, ça passe très bien, il détecte que fichierA et fichierB sont des hard link, il crée fichierB comme un hard link sur fichierA dans la destination, et à l'étape suivante il supprime fichierA.
 +
 +===== Performance =====
 +
 +https://icesquare.com/wordpress/how-to-improve-rsync-performance/
 +
 +rsync est plus performant lorsque l'on utilise le daemon rsyncd
 +
 +===== Voir ce qui va être transféré =====
 +
 +  rsync -nrv --ignore-existing source/ destination/ | xargs -I {} ls -l source/{}
 +
 +  * -n fait un dry run, n'execute rien
 +  * -r pour le récursif
 +  * -v pour le verbose
 +
 +On passe tout ça dans xargs pour faire un ls -l sur chaque fichier
linux/rsync.1365105981.txt.gz · Dernière modification: 04-12-2013 23:30 (modification externe)