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
rsync [Le 23/03/2024, 12:44]
86.202.8.12
rsync [Le 25/03/2024, 09:08] (Version actuelle)
bcag2 user -> $USER, <code> -> <code bash>
Ligne 25: Ligne 25:
  
 L'​appel de base : L'​appel de base :
-<​code>​rsync source/ destination/</​code>​+<​code ​bash>rsync source/ destination/</​code>​
  
-En __local__, ​cela peut donner cela pour une copie/​synchro de votre répertoire vidéo vers un disque dur externe (de sauvegarde) [[montage|monté]] dans **/media/user/** +En __local__, pour une copie/​synchro de votre répertoire vidéo vers un disque dur externe (de sauvegarde) [[montage|monté]] dans **/media/$USER/**, cela donne : 
-<​code>​rsync -av /home/user/Vidéos/ /media/user/​film_music/​Vidéos/</​code>​+<​code ​bash>rsync -av /home/$USER/Vidéos/ /media/$USER/​film_music/​Vidéos/</​code>​
 L'​option "​**v**"​ affiche les fichiers sauvegardés au fur et à mesure. Pour l'​option "​**a**",​ voir plus bas. L'​option "​**v**"​ affiche les fichiers sauvegardés au fur et à mesure. Pour l'​option "​**a**",​ voir plus bas.
-//user// est à remplacer par votre identifiant Ubuntu.\\+//$USER// est la variable d’environnement système qui permet d'​accéder au nom d’utilisateur de la session en cours.\\
 Vous pouvez relancer cette commande à chaque nouvelle synchro, seuls les nouveaux fichiers seront synchronisés. Vous pouvez relancer cette commande à chaque nouvelle synchro, seuls les nouveaux fichiers seront synchronisés.
  
 En __réseau__,​ **rsync** utilise [[SSH]] par défaut. Un exemple : En __réseau__,​ **rsync** utilise [[SSH]] par défaut. Un exemple :
-<​code>​rsync -az source/ login@serveur.org:/​destination/</​code>​+<​code ​bash>rsync -az source/ login@serveur.org:/​destination/</​code>​
 où: où:
   * //-a// ou //​%%--%%archive//​ : est un moyen rapide de dire que vous voulez la récursivité et préserver pratiquement tout. La seule exception est que si //​%%--%%files-from//​ a été spécifiée alors //-r// n'est pas utilisée. Ceci est équivalent à //​-rlptgoD//​.   * //-a// ou //​%%--%%archive//​ : est un moyen rapide de dire que vous voulez la récursivité et préserver pratiquement tout. La seule exception est que si //​%%--%%files-from//​ a été spécifiée alors //-r// n'est pas utilisée. Ceci est équivalent à //​-rlptgoD//​.
Ligne 41: Ligne 41:
 <note important>​ <note important>​
 Attention, il convient d'​être vigilant dans l'​utilisation ou non du slash (« /​ ») dans le chemin de la source. Ainsi, les deux commandes suivantes **ne sont pas** équivalentes :​ Attention, il convient d'​être vigilant dans l'​utilisation ou non du slash (« /​ ») dans le chemin de la source. Ainsi, les deux commandes suivantes **ne sont pas** équivalentes :​
-<​code>​rsync source destination/​+<​code ​bash>rsync source destination/​
 rsync source/ destination/</​code>​ rsync source/ destination/</​code>​
  
 En effet, la première commande va **_créer_** le dossier source dans le dossier destination en ajoutant donc un niveau dans l'​arborescence. La deuxième commande copie le **_contenu_** du dossier source dans le dossier destination. En effet, la première commande va **_créer_** le dossier source dans le dossier destination en ajoutant donc un niveau dans l'​arborescence. La deuxième commande copie le **_contenu_** du dossier source dans le dossier destination.
 Autrement dit, les deux commandes suivantes sont, elles, équivalentes* :​ Autrement dit, les deux commandes suivantes sont, elles, équivalentes* :​
-<​code>​rsync source destination/​+<​code ​bash>rsync source destination/​
 rsync source/ destination/​source/</​code> ​ rsync source/ destination/​source/</​code> ​
  
 Enfin, il faut noter que l'​utilisation ou non d'un slash final dans le chemin de la destination n'a aucune incidence. Les deux commandes suivantes sont donc équivalentes :​ Enfin, il faut noter que l'​utilisation ou non d'un slash final dans le chemin de la destination n'a aucune incidence. Les deux commandes suivantes sont donc équivalentes :​
  
-<​code>​rsync source destination/​+<​code ​bash>rsync source destination/​
 rsync source destination</​code> ​ rsync source destination</​code> ​
  
Ligne 58: Ligne 58:
 <​note>​ <​note>​
 Pour une gestion du port ssh, utiliser la syntaxe suivante: Pour une gestion du port ssh, utiliser la syntaxe suivante:
-<​code>​+<​code ​bash>
 rsync -avz chemin/​source/​ -e "ssh -p port" user@ip:"/​chemin/​de destination avec espaces/"​ rsync -avz chemin/​source/​ -e "ssh -p port" user@ip:"/​chemin/​de destination avec espaces/"​
 </​code>​ </​code>​
Ligne 67: Ligne 67:
 Copie du dossier source vers le serveur : Copie du dossier source vers le serveur :
  
-<​code>​rsync -e ssh -avz --delete-after /​home/​source user@ip_du_serveur:/​dossier/​destination/</​code>​+<​code ​bash>rsync -e ssh -avz --delete-after /​home/​source user@ip_du_serveur:/​dossier/​destination/</​code>​
 où : où :
   * //<​nowiki>​--</​nowiki>​delete-after//​ : à la fin du transfert, supprime les fichiers dans le dossier de destination ne se trouvant pas dans le dossier source.   * //<​nowiki>​--</​nowiki>​delete-after//​ : à la fin du transfert, supprime les fichiers dans le dossier de destination ne se trouvant pas dans le dossier source.
Ligne 75: Ligne 75:
  
 Si les noms des chemins contiennent des espaces, on peut les écrire entre guillemet pour échapper les espaces : Si les noms des chemins contiennent des espaces, on peut les écrire entre guillemet pour échapper les espaces :
-<​code>​rsync -e ssh -avz --delete-after "/​home/​source avec espace/"​ user@ip_du_serveur:"/​dossier/​destination avec espace/"</​code>​+<​code ​bash>rsync -e ssh -avz --delete-after "/​home/​source avec espace/"​ user@ip_du_serveur:"/​dossier/​destination avec espace/"</​code>​
  
 <​note>​ <​note>​
 Attention à partir de la version 3.0, d'​après le man, le caractère espace doivent être échappés pour être compris et le chemin doit être indiqué entre apostrophe. Donc l'​instruction précédente devient : Attention à partir de la version 3.0, d'​après le man, le caractère espace doivent être échappés pour être compris et le chemin doit être indiqué entre apostrophe. Donc l'​instruction précédente devient :
-<​code>​+<​code ​bash>
 rsync -avz chemin/​source/​ -e "ssh -p port" user@ip:'/​chemin/​de\ destination\ avec\ espaces/'​ rsync -avz chemin/​source/​ -e "ssh -p port" user@ip:'/​chemin/​de\ destination\ avec\ espaces/'​
 </​code>​ </​code>​
Ligne 85: Ligne 85:
  
 Avec l'​option //-n// la commande liste ce qu'​elle va faire sans l'​exécuter : Avec l'​option //-n// la commande liste ce qu'​elle va faire sans l'​exécuter :
-<​code>​rsync -e ssh -avzn --delete-after /​home/​mondossier_source user@ip_du_serveur:/​dossier/​destination/</​code>​+<​code ​bash>rsync -e ssh -avzn --delete-after /​home/​mondossier_source user@ip_du_serveur:/​dossier/​destination/</​code>​
  
 ==== Exclure des fichiers ==== ==== Exclure des fichiers ====
Ligne 152: Ligne 152:
  
 Sur le serveur distant : Sur le serveur distant :
-  * Autoriser l'​utilisateur à lancer la commande rsync sous le compte système www-data grace à [[sudo]], __sans mot de passe__: <​code>​sudo visudo</​code><​file>​utilisateurssh ALL=(www-data) NOPASSWD: /​usr/​bin/​rsync</​file>​+  * Autoriser l'​utilisateur à lancer la commande rsync sous le compte système www-data grace à [[sudo]], __sans mot de passe__: <​code ​bash>sudo visudo</​code><​file>​utilisateurssh ALL=(www-data) NOPASSWD: /​usr/​bin/​rsync</​file>​
   * Optionnel : déposer une clef publique ssh au besoin pour l'​utilisateur   * Optionnel : déposer une clef publique ssh au besoin pour l'​utilisateur
  
 Sur la machine locale : Sur la machine locale :
-  * Lancer une synchronisation en tant qu'​utilisateur www-data grace à [[sudo]]<​code>​sudo -u www-data rsync -a --progress -e ssh --rsync-path "sudo -u www-data rsync" utilisateur@serveur_distant:/​var/​www/​ /​var/​www/</​code>​+  * Lancer une synchronisation en tant qu'​utilisateur www-data grace à [[sudo]]<​code ​bash>sudo -u www-data rsync -a --progress -e ssh --rsync-path "sudo -u www-data rsync" utilisateur@serveur_distant:/​var/​www/​ /​var/​www/</​code>​
  
 [[https://​crashingdaily.wordpress.com/​2007/​06/​29/​rsync-and-sudo-over-ssh/​|Source de ce tutoriel]], adaptée pour le cas présenté [[https://​crashingdaily.wordpress.com/​2007/​06/​29/​rsync-and-sudo-over-ssh/​|Source de ce tutoriel]], adaptée pour le cas présenté
  • rsync.txt
  • Dernière modification: Le 25/03/2024, 09:08
  • par bcag2