Avec scp
, non.
Si les deux extrémités l'ont, vous pouvez utiliser rsync -LvzP remoteserver:path/to/file localfile
pour transférer un seul fichier.
Vous pouvez essayer l'approche suivante :au lieu de scp utilisez jj pour ignorer la partie téléchargée et ajouter le reste au fichier.
sofar=`ls -l ./destfile | awk '{print $5}'`
ssh rsys "dd if=./srcfile bs=1 skip=$sofar" >> ./destfile
Optimisation possible :travailler avec de gros blocs. Laissons cela comme un devoir.
Oui, il existe des moyens de reprendre à partir du point d'interruption, mais ce n'est pas possible en utilisant scp. sftp reget filename
fait ce dont vous avez besoin. Yarek et Grawity ont fourni des solutions valides que j'ai +1 aux deux, mais pour reprendre à partir d'un point d'interruption, j'aime rsync. Les exemples de commandes fournis supposent que vous récupérez un fichier d'un serveur distant vers votre poste de travail local (téléchargement). Veuillez garder à l'esprit que les deux derniers paramètres doivent être considérés comme source_file et target_file 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 à la solution rsync, j'ajoute -e ssh
. Vous devez déterminer si vous avez besoin ou non de verbosité, de compression, de préservation de la propriété, d'autorisations, d'horodatage, de répertoires récursifs, etc. Consultez les pages de manuel et Google concernant le paramètre -L. Vous voudrez peut-être que les liens symboliques restent en tant que liens au lieu de les référencer.
rsync -P -e ssh local_source_file remoteserver:path/to/interrupted_target_file