Versions
13 mars 2012 : création
19 mai 2015 : correction doc scp
Contactez-nous
Kitpages
17 rue de la Frise
38000 Grenoble
tel : 04 58 00 33 81
Copier des répertoires entre machines avec ssh
Introduction
Il y a 15 moyens de copier des répertoires entre machines distantes quand on n'a que des accès ssh. Voyons quelques solutions avec leurs avantages respectifs.
Copie simple avec SCP
La copie la plus banale, l'utilisation de scp
Avantages :
- C'est simple et direct
Défauts :
- C'est lent quand on a énormément de petits fichiers
cd le_repertoire_de_copie scp -rp user@host.com:/toto/titi_dir ./ # note : # -r permet de faire une copie récursive du répertoire titi_dir/ # -p permet de préserver les droits et date des fichiers
Copie avec tar et ssh
C'est une ruse assez sioux
Avantages :
- C'est rapide même avec beaucoup de petits fichiers
- Ca peut compresser les données
- ça conserve les dates, users, droits
Défault :
- La syntaxe barbare est quasiment impossible à retenir par coeur
# on se loggue sur la machine destination et on tape : (ssh user@host.com 'cd /data/dir_a_copier && tar cf - *') | (cd /xxx/dir_destination && tar -xf -) # et si vous voulez compresser, ajoutez dans les paramètres du tar la compression que vous souhaitez (z, j,...) (ssh user@host.com 'cd /data/dir_a_copier && tar zcf - *') | (cd /xxx/dir_destination && tar -zxf -) # Pour lancer la tâche en arrière plan nohup sh -c "(ssh user@host.com 'cd /data/dir_a_copier && tar zcf - *') | (cd /xxx/dir_destination && tar -zxf -)" &
Copie avec rsync et ssh
Très bien pour synchroniser des répertoires entre 2 machines. rsync commence par regarder les différences entre les répertoires et ne copie que les fichiers qui ont été modifiés
# aller sur la machine destination et lancer # les commandes suivantes : cd /data/dir_destination rsync -vazu -e ssh user@host.com:/data/dir_a_copier/ ./
Utilisation de rsync et ssh avec exclusion de fichiers
Avec rsync, on peut en plus séléctionner de façon assez fine la liste des fichiers/répertoires que l'on souhaite synchroniser ou non.
# Utilisation de rsync avec exclusion # dans cet exemple, on se loggue sur la machine source rsync -vazu -e ssh \ --exclude "/**/CVS" \ --include "*/" \ --include "*.jsp" \ --exclude "*" \ /xxx/le_repertoire_a_copier/* user@host.com:/xxx/le_repertoire_destination_a_distance
Commentaires
Note : on ne peut plus ajouter de commentaire sur ce site