Copie de fichiers et de répertoires à travers le réseau []

Outils pour utilisateurs

Outils du site


Copie de fichiers et de répertoires à travers le réseau

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édentesRévision précédente
Prochaine révision
Révision précédente
documentation:informatique:linux:copie_reseau [2019/01/23 13:30] f1slsdocumentation:informatique:linux:copie_reseau [2019/01/23 13:40] (Version actuelle) – [Créer un dossier miroir] f1sls
Ligne 18: Ligne 18:
  
 ===== rsync ===== ===== rsync =====
 +>> « rsync est un programme très similaire à rcp, mais possède bien plus d'options et utilise le protocole de mise à jour à distance rsync afin d'accélérer significativement le transfert de fichiers lorsque le fichier de destination existe déjà. »
 +
 +L'appel de base :
 +
 +<code>
 +rsync source/ destination/
 +</code>
 +
 +L'intérêt est une utilisation à travers le réseau. rsync utilise SSH par défaut. Un exemple :
 +
 +<code>
 +rsync -az source/ login@serveur.org:/destination/
 +</code>
 +
 +<WRAP center round info 60%>
 +  * -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.
 +  * -z ou --compress : compresse les données lors du transfert. (Limite la bande passante mais augmente l'utilisation processeur et le temps de transfert : inutile en réseau locale ou avec très bon débit)
 +</WRAP>
 +
 +<WRAP center round important 60%>
 +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/
 +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. Autrement dit, les deux commandes suivantes sont, elles, équivalentes* :
 +
 +<code>
 +rsync source destination/
 +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 :
 +
 +<code>
 +rsync source destination/
 +rsync source destination
 +</code>
 +
 +* Sauf dans le cas ou source est un lien symbolique vers un répertoire, la première commande ne copie que le lien, tandis que la seconde travaille bien à l'intérieur du répertoire
 +
 +</WRAP>
 +
 +==== Créer un dossier miroir ====
 +Voici un exemple d'une commande, utilisant le protocole SSH, qui copie à l'identique le dossier <source> vers le dossier <destination>.
 +
 +Copie du dossier source vers le serveur:
 +
 +<code>
 +rsync -e ssh -avz --delete-after /home/source user@ip_du_serveur:/dossier/destination/
 +</code>
 +
 +<WRAP center round info 60%>
 +  * --delete-after : à la fin du transfert, supprime les fichiers dans le dossier de destination ne se trouvant pas dans le dossier source.
 +  * -z : compresse les fichiers (Limite la bande passante mais augmente l'utilisation processeur et le temps de transfert : inutile en réseau locale ou avec très bon débit)
 +  * -v : verbeux
 +  * -e ssh : utilise le protocole SSH
 +</WRAP>
 +
 +
 +Si chemin(s) avec des espaces, on peut écrire les chemins entre guillemet en échappant les espace :
 +
 +<code>
 +rsync -e ssh -avz --delete-after "/home/source avec espace/" user@ip_du_serveur:"/dossier/destination avec espace/"
 +</code>
 +
 +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>
 +
 +==== Exclure des fichiers ====
 +On peut exclure des fichiers/dossiers selon beaucoup de schémas. C'est utile pour ne pas sauvegarder le cache, les fichiers temporaires, la corbeille, etc…
 +
 +Liste dans la commande :
 +<code>
 +rsync --exclude="nom_de_dossier" --exclude="- autre_nom_de_dossier" source/ destination/
 +</code>
 +Un fichier de règles d'exclusion
 +<code>
 +rsync --exclude-from=ExclusionRSync source/ destination/ 
 +</code>
 +
 +Et le fichier ExclusionRSync dans le dossier courant sera de cette forme :
 +
 +<code>
 +tmp
 +.Trash
 +.cache
 +.PlayOnLinux
 +</code>
 +Vous pouvez consulter cette page très intéressante sur le sujet de l'exclusion par fichier de règles.
 +
documentation/informatique/linux/copie_reseau.1548246606.txt.gz · Dernière modification : de f1sls