Vous êtes ici : Accueil Zaclys Astuces / Les rubriques / Informatique / Système d'exploitation / Linux / SysAdmin

Voir un article

Transfert de fichiers via ssh : plus rapide et sans limite

Le volume à transférer est trop gros pour en faire une archive ? L'arborescence est trop complexe pour du FTP ? Vous voulez accélérer le débit par x10 par rapport à NFS ? Vous voulez utiliser une connexion sécurisée ssh ?

1/ utilisez les flux tar via un tunnel ssh (put)  :

cd dossierLocal
tar -cpf - . | (ssh serveurDistant "cd dossier; tar -xpf -")


Explication :
tar cpf - .  va produire 1 archive ('c' pour compress, 'p' pour preserve) du dossier courant '.' et envoyer le flux sur la sortie standard ('f -' pour file vers flux) ,
ce flux nous  leredirigeons via le tube '|' vers une connexion ssh vers le serveur distant,
cette connexion ssh va transmettre le flux à la commande entre en guillemets qui s'exécute sur le serveur distant , cad ici se placer dans un dossier puis lancer la commande tar en décompression (option x) , en préservant les droits (p) du flux reçu (f -)

Facile non ?



2/ Bien sur ça fonctionne aussi dans l'autre sens (get au lieu de put), pour récupérer une arborescence :

cd dossierlocal
(ssh serveurDistant "cd dossier;tar -cpf - . ") | tar -xpf -




3/ Pour accélérer encore les transferts (inutile sur des données djà compressées telles que photos ou vidéos ou ça ralentirait les transferts) , vous pouvez passer le flux via gzip   pour le compresser à la volée (inutile pour des jpeg et autres fichiers déjà compressés en natif) et donc diminuer le volume de data en transit sur le réseau entre les 2 machines  (car l'option c de tar ne compresse pas vraiment, il pack simplement), il suffit de rajouter l'option "z" à tar :

soit pour le get (depuis le pc local je vais récupérer les datas du serveur distant) :
cd dossierlocal; (ssh serveurDistant "cd dossier;tar -czpf - . ") | tar -xzpf -

et pour le put  (depuis le pc local j'envoie des datas vers le serveur distant ) :
cd dossierLocal; tar -czpf - . |(ssh serveurDistant "cd dossier; tar -xzpf -")



4/ Passez par des relais ssh :
Vous pouvez tout aussi facilement passer par plusieurs machines en cascade pour faire transiter le flux. Par ex la machine A peut passer par la machine B pour aller récupérer les fichiers sur la machine C. Dans ce cas depuis A :
(ssh B " ssh C 'cd dossier;tar -cpf - . ' ") | tar -xpf -

 

5/ contrôler le débit 

cd dossierLocal
tar -cpf - . | cstream -T 60 |(ssh serveurDistant "cd dossier; tar -xpf -")

(cf man cstream)

 



5 473 clics - Créé le 17/11/2011 par Tito - Modifié le 21/12/2016



Réagissez, commentez, discutez ...

InfoSoyez le premier à réagir !



Partager ?

diaspora  G+  facebook  twitter  Digg  Yahoo  Delicious  Technorati  myspace


Voir d'autres articles en rapport avec celui-ci ?



Stats des clics sur cet article : cliquez ici »



Vous voulez contribuer et publier un article dans cette rubrique ?

InfoMerci de vous identifier ou de vous créer un compte si ce n'est pas déjà fait.


ATTENTION
Vous êtes ici sur l'ancien site de l'association Zaclys.
Depuis 2019 notre site est ici : nouveau site Zaclys

icone user Me connecter :

InfoMerci de saisir vos identifiants.




Me reconnecter automatiquement à chaque visite sur ce navigateur :
               





retour






Plan du site | Aide | Mentions légales et CGU | RGPD | Travaux et incidents | Budget | Faire un don | Chouchen | Z pub | Logo et prospectus

© Association la mère Zaclys 1998-2021  - Zaclys v2.5

Suivez nous sur Diaspora, Mastodon, Google+, FaceBook ou Twitter