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:28] – [SCP] f1slsdocumentation:informatique:linux:copie_reseau [2019/01/23 13:40] (Version actuelle) – [Créer un dossier miroir] f1sls
Ligne 3: Ligne 3:
 ===== SCP ===== ===== SCP =====
  
-De serveur à serveur depuis votre machine locale+==== De serveur à serveur depuis votre machine locale ====
 Copie récursive d’un dossier d’un serveur (serveur1) vers un autre serveur (serveur2) depuis votre machine locale. Copie récursive d’un dossier d’un serveur (serveur1) vers un autre serveur (serveur2) depuis votre machine locale.
 Cela nécessite d’avoir accès aux deux serveurs, depuis votre machine locale, vous lancez une commande qui copiera les fichiers d’un serveur à un autre. Cela nécessite d’avoir accès aux deux serveurs, depuis votre machine locale, vous lancez une commande qui copiera les fichiers d’un serveur à un autre.
Ligne 10: Ligne 10:
 scp -r -p user@serveur1:chemin/vers/dossier/source user@serveur2:chemin/vers/dossier/destination scp -r -p user@serveur1:chemin/vers/dossier/source user@serveur2:chemin/vers/dossier/destination
 </code> </code>
 +
 +==== De serveur à serveur en étant connecté à un serveur ====
 +La commande est sensiblement la même, vous êtes connecté sur la machine où sont disponibles les fichiers.
 +<code>
 +scp -r -p chemin/vers/dossier/source user@serveur2:chemin/vers/dossier/destination
 +</code>
 +
 +===== 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.1548246504.txt.gz · Dernière modification : de f1sls