Le moyen le plus rapide de transférer 55 Go d'images vers un nouveau serveur

J'ai actuellement deux serveurs CentOS. J'ai besoin de savoir comment et de quelle manière la plus rapide serait de "tar" sur le répertoire des images et de SCP?

Est-ce la façon la plus rapide que je viens de suggérer, parce que tarring prend toujours … J'ai couru la commande:

tar cvf imagesbackup.tar images 

Et j'allais juste m'en occuper.

Permettez-moi de savoir s'il existe un moyen plus rapide. J'ai un accès distant / SSH aux deux machines.

Au lieu d'utiliser tar pour écrire sur votre disque local, vous pouvez écrire directement sur le serveur distant sur 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 effectuer une entrée / sortie de tuyaux vers et depuis ces commandes distantes via SSH comme si elles étaient locales. Mettre la commande entre guillemets évite toute confusion, surtout lors de l'utilisation de la redirection.

Ou, vous pouvez extraire le fichier tar sur l'autre serveur directement:

 server1$ tar -zc ./path | ssh server2 "tar -zx -C /destination" 

Notez l'option -C rarement utilisée. Cela signifie "changer ce répertoire avant de tout faire".

Ou, peut-être, vous voulez "tirer" du serveur de destination:

 server2$ tar -zx -C /destination < <(ssh server2 "tar -zc -C /srcdir ./path") 

Notez que la construction <(cmd) est nouvelle pour bash et ne fonctionne pas sur des systèmes plus anciens. Il exécute un programme et envoie la sortie à un tuyau, et il substitue cette pipe à la commande comme s'il s'agissait d'un fichier.

Je pourrais juste avoir facilement écrit ce qui suit 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 sauver un peu de peine et utilisez simplement 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 sur une connexion très rapide, elle peut effectivement rendre l'opération plus longue . C'est parce que votre ordinateur risque de ne pas être compressé assez rapidement pour continuer: si vous comprimez 100 Mo, cela prend plus de temps qu'il le faudrait pour envoyer 100 Mo, alors il est plus rapide de le faire décompresser.

Alternativement, vous voudrez peut-être considérer la tuyauterie pour vous gzip vous-même (plutôt que d'utiliser l'option -z) afin que vous puissiez spécifier un niveau de compression. Il a été mon expérience que, lors de connexions réseau rapides avec des données compressibles, l'utilisation de 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" 

Je serais tenté de le rsync sur moi-même – il fait de la compression et gère bien la perte de lien.