Grâce à la merveilleuse réponse de Scott Pack (je ne savais pas comment faire cela avec ssh auparavant), je peux offrir cette amélioration (si bash
est votre Shell). Cela ajoutera une compression parallèle, un indicateur de progression et vérifiera l'intégrité à travers le lien réseau :
tar c file_list |
tee >(sha512sum >&2) |
pv -prab |
pigz -9 |
ssh [user@]remote_host '
gunzip |
tee >(sha512sum >&2) |
tar xC /directory/to/extract/to
'
pv
est un joli programme de visualisation de la progression de votre pipe et de votre ordinateur. pigz
est un programme gzip parallèle qui utilise par défaut autant de threads que votre CPU en possède (jusqu'à 8 maximum, je crois). Vous pouvez régler le niveau de compression pour qu'il corresponde mieux au ratio CPU/bande passante réseau et le remplacer par pxz -9e
y pxz -d
si vous avez beaucoup plus de CPU que de bande passante. Il suffit de vérifier que les deux sommes correspondent à l'issue du calcul.
Cette option est utile pour les très grandes quantités de données ainsi que pour les réseaux à forte latence, mais pas très utile si le lien est instable et tombe. Dans ces cas, rsync est probablement le meilleur choix car il peut reprendre.
Exemple de sortie :
6c1fe5a75cc0280709a794bdfd23d7b8b655f0bbb4c320e59729c5cd952b4b1f84861b52d1eddb601259e78249d3e6618f8a1edbd20b281d6cd15f80c8593c3e - ]
176MiB [9.36MiB/s] [9.36MiB/s] [ <=> ]
6c1fe5a75cc0280709a794bdfd23d7b8b655f0bbb4c320e59729c5cd952b4b1f84861b52d1eddb601259e78249d3e6618f8a1edbd20b281d6cd15f80c8593c3e -
Pour les dispositifs en bloc :
dd if=/dev/src_device bs=1024k |
tee >(sha512sum >&2) |
pv -prab |
pigz -9 |
ssh [user@]remote_host '
gunzip |
tee >(sha512sum >&2) |
dd of=/dev/src_device bs=1024k
'
Évidemment, assurez-vous qu'ils sont de la même taille ou limitez-les avec count=, skip=, seek=, etc.
Lorsque je copie des systèmes de fichiers de cette façon, je commence souvent par dd if=/dev/zero of=/thefs/zero.dat bs=64k && sync && rm /thefs/zero.dat && umount /thefs
pour remettre à zéro la plupart de l'espace inutilisé, ce qui accélère le transfert.
1 votes
Quel type de réseau avez-vous entre les serveurs ? J'ai utilisé un croisement Ethernet GB entre 1 NIC dans chaque machine. J'ai obtenu un très bon résultat avec cette configuration en utilisant SCP.
0 votes
Vous pouvez chercher à savoir pourquoi scp est si lent. Il est peut-être plus lent que des choses comme ftp à cause du cryptage, mais il ne devrait pas être beaucoup plus lent.
0 votes
J'ai 100 mbps entre eux. scp est plus lent sur les petits fichiers (la plupart d'entre eux sont petits).