Au lieu d'utiliser tar pour écrire sur votre disque local, vous pouvez écrire directement sur le serveur distant via le réseau en utilisant ssh.
server1$ tar -zc ./path | ssh server2 "cat > ~/file.tar.gz"
Toute chaîne qui suit votre commande "ssh" sera exécutée sur le serveur distant au lieu de la connexion interactive. Vous pouvez diriger les entrées/sorties vers et depuis ces commandes distantes via SSH comme si elles étaient locales. Le fait de mettre la commande entre guillemets évite toute confusion, notamment lors de l'utilisation de la redirection.
Ou bien, vous pouvez extraire le fichier tar sur l'autre serveur directement :
server1$ tar -zc ./path | ssh server2 "tar -zx -C /destination"
Notez l'utilisation rare de -C
option. Elle signifie "passer d'abord dans ce répertoire avant de faire quoi que ce soit".
Ou bien, vous voulez peut-être "tirer" du serveur de destination :
server2$ tar -zx -C /destination < <(ssh server1 "tar -zc -C /srcdir ./path")
Notez que le <(cmd)
construct est nouveau dans bash et ne fonctionne pas sur les anciens systèmes. Elle exécute un programme et envoie la sortie vers un pipe, et substitue ce pipe dans la commande comme si c'était un fichier.
J'aurais pu facilement écrire ce qui précède comme suit :
server2$ tar -zx -C /destination -f <(ssh server1 "tar -zc -C /srcdir ./path")
Ou comme suit :
server2$ ssh server1 "tar -zc -C /srcdir ./path" | tar -zx -C /destination
Ou bien, vous pouvez vous épargner quelques soucis et utiliser rsync :
server1$ rsync -az ./path server2:/destination/
Enfin, n'oubliez pas que la compression des données avant le transfert réduira votre bande passante, mais que sur une connexion très rapide, elle peut en fait faire durer l'opération. plus de temps . Cela est dû au fait que votre ordinateur n'est peut-être pas en mesure de compresser assez rapidement pour suivre : si en comprimant 100MB prend plus de temps qu'il n'en faudrait pour envoyer 100 Mo, il est plus rapide de l'envoyer sans compression.
Vous pouvez également envisager d'utiliser vous-même le protocole gzip (plutôt que l'option -z) afin de pouvoir spécifier un niveau de compression. D'après mon expérience, sur les connexions réseau rapides avec des données compressibles, l'utilisation de gzip au niveau 2 ou 3 (le niveau par défaut est 6) donne le meilleur débit global dans la plupart des cas. Par exemple :
server1$ tar -c ./path | gzip -2 | ssh server2 "cat > ~/file.tar.gz"
13 votes
Sneakernet ?
0 votes
Véase unix.stackexchange.com/questions/227951/