Au lieu d'utiliser tar pour écrire sur votre disque local, vous pouvez écrire directement sur le serveur distant via le réseau à l'aide de 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. Mettre la commande entre guillemets évite toute confusion, en particulier lors de l'utilisation de la redirection.
Ou, vous pouvez extraire directement le fichier tar sur l’autre serveur:
server1$ tar -zc ./path | ssh server2 "tar -zx -C /destination"
Notez l' -C
option rarement utilisée . Cela signifie "aller dans ce répertoire avant de faire quoi que ce soit".
Ou peut-être voulez-vous "extraire" du serveur de destination:
server2$ tar -zx -C /destination < <(ssh server2 "tar -zc -C /srcdir ./path")
Notez que la <(cmd)
construction est nouvelle pour bash et ne fonctionne pas sur les systèmes plus anciens. Il exécute un programme et envoie la sortie à un canal, puis le remplace dans la commande comme s'il s'agissait d'un fichier.
J'aurais simplement pu écrire ce qui précède comme suit:
server2$ tar -zx -C /destination -f <(ssh server2 "tar -zc -C /srcdir ./path")
Ou comme suit:
server2$ ssh server2 "tar -zc -C /srcdir ./path" | tar -zx -C /destination
Ou, vous pouvez vous épargner un peu de chagrin et utiliser simplement rsync:
server1$ rsync -az ./path server2:/destination/
Enfin, rappelez-vous que la compression des données avant le transfert réduira votre bande passante. Toutefois, avec une connexion très rapide, l'opération risque de prendre plus de temps . En effet, votre ordinateur ne sera peut-être pas en mesure de compresser assez rapidement pour suivre le rythme: si compresser 100 Mo prend plus de temps qu'il n'en faudrait pour envoyer 100 Mo, il est alors plus rapide de l'envoyer non compressé.
Alternativement, vous pouvez envisager de canaliser vous-même le gzip (plutôt que d'utiliser 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, utiliser gzip au niveau 2 ou 3 (la valeur par défaut est 6) donne le meilleur débit global dans la plupart des cas. Ainsi:
server1$ tar -c ./path | gzip -2 | ssh server2 "cat > ~/file.tar.gz"