Je télécharge de temps en temps un très gros fichier via scp et il y a à chaque fois un petit risque que la connexion s'interrompe et coupe le transfert à mi-chemin.
Existe-t-il un moyen de le reprendre ?
Je télécharge de temps en temps un très gros fichier via scp et il y a à chaque fois un petit risque que la connexion s'interrompe et coupe le transfert à mi-chemin.
Existe-t-il un moyen de le reprendre ?
Vous pouvez essayer l'approche suivante : au lieu de scp utiliser dd pour ignorer la partie téléchargée et ajouter le reste au fichier.
sofar=`ls -l ./destfile | awk '{print $5}'`
ssh user@host "dd if=./srcfile bs=1 skip=$sofar" >> ./destfile
Optimisation possible : travailler avec de gros blocs. Laissons cela comme devoir.
Oui, il existe des moyens de reprendre à partir du point d'interruption, mais ce n'est pas possible avec scp. sftp reget filename
fait ce dont vous avez besoin. Yarek et Grawity ont fourni des solutions valables que je +1 aux deux, mais pour reprendre à partir d'un point d'interruption, j'aime rsync. Les exemples de commandes fournis supposent tous deux que vous récupérez un fichier d'un serveur distant vers votre station de travail locale (téléchargement). N'oubliez pas que les deux derniers paramètres doivent être considérés comme fichier_source et fichier_cible dans cet ordre. La syntaxe du nom de fichier varie selon que le fichier source ou cible est local ou distant. Si j'envoyais (téléchargeais) des fichiers [texte], je réécrirais les exemples fournis comme suit :
#From local to remote
sofar=\`ssh remote\_system ls -l interrupted\_file | awk '{print $5}'\`;
dd if=source\_file bs=1 skip=$sofar | ssh remote\_system "cat >> ./interrupted\_file"
Et pour la solution rsync, j'ajoute -e ssh
. Vous devez déterminer si vous avez besoin ou non de la verbosité, de la compression, de la préservation de la propriété, des permissions, de l'horodatage, de la récursivité des répertoires, etc. Consultez les pages de manuel et Google concernant le paramètre -L. Il se peut que vous souhaitiez que les liens symboliques restent des liens au lieu de les référencer.
rsync -P -e ssh local_source_file remoteserver:path/to/interrupted_target_file
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.