Si on utilise ftp pas de problème, on peut utiliser l'option continue. Mais dans le cas ou on n'a pas accès à ftp (donc on n'est pas root sur la machine, sinon c'est trop facile).
La solution consiste à découper le fichier, calculer une somme de contrôle, s'envoyer les fichiers et faire un controle des fichiers.
# Etape 1 : Découpage
ssh toto@server
mkdir splitted
split -b 100m data.tar.gz splitted/data.tar.gz.
cd splitted
md5sum -b data.tar.gz.* > cheksum.md5
exit
Le problème de cette solution c'est qu'on double l'espace disque nécessaire, à 300Go ça peut etre significatif ! Ici j'utilise un tar. Il est possible de tarrer et splitter à la volé.
tar czf dossier/* | split -b 100m - splitted/data.tar.gz.
# Etape 2 : Transfert
sftp toto@server
cd splitted
get cheksum.md5
get data.tar.gz.*
exit
En cas d'erreur de téléchargement, faire un checksum en local pour identifier les fichiers corrompus
cd splitted
md5sum -c cheksum.md5 | grep -v OK
On peut relancer le téléchargement partiellement grâce à sftp et les wildcards. Par exemple
get data.tar.gz.[g-z]?récupère les fichiers à partir de data.tar.gz.ga jusqu'à data.tar.gz.zz
Ce qui est très pratique avec cette méthode c'est qu'elle peut vous sauver la vie. Après un scp audacieux sur un fichier de 10Go qui foire à 90% de la fin. On peut faire le split coté client et serveur, générer un checksum coté client et le tester sur les fichiers splittés coté serveur : c'est magique les checksum colle. Enfin on Effectue le téléchargement des fichiers manquants..
# Etape 3 : Reconstruction
cat splitted/data.tar.gz.* > data.tar.gz
TADA !

