S scp
, ne.
Pokud jej mají oba konce, můžete použít rsync -LvzP remoteserver:path/to/file localfile
pro přenos jednoho souboru.
Můžete zkusit následující přístup:místo scp použijte dd přeskočíte staženou část a přidáte zbytek k souboru.
sofar=`ls -l ./destfile | awk '{print $5}'`
ssh rsys "dd if=./srcfile bs=1 skip=$sofar" >> ./destfile
Možná optimalizace:práce s velkými bloky. Necháme to jako domácí úkol.
Ano, existují způsoby, jak pokračovat od místa přerušení, ale pomocí scp to není možné. sftp reget filename
dělá, co potřebujete. Yarek a Grawity poskytli platná řešení, která dávám oběma +1, ale pro obnovení z bodu přerušení se mi líbí rsync. Oba uvedené ukázkové příkazy předpokládají, že načítáte soubor ze vzdáleného serveru na vaši místní pracovní stanici (stahujete). Mějte prosím na paměti, že poslední dva parametry by měly být považovány za zdrojový_soubor a cílový_soubor v tomto pořadí. Syntaxe názvu souboru se liší podle toho, zda je zdrojový nebo cílový soubor lokální nebo vzdálený. Pokud bych posílal (nahrával) [textové] soubory, přepsal bych uvedené příklady jako:
#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"
A k řešení rsync přidávám -e ssh
. Měli byste zvážit, zda potřebujete podrobnost, kompresi, zachování vlastnictví, oprávnění, časové razítko, adresáře rekurze atd. Zkontrolujte manuálové stránky a google ohledně parametru -L. Možná budete chtít, aby symbolické odkazy zůstaly jako odkazy, místo aby se na ně odkazovalo.
rsync -P -e ssh local_source_file remoteserver:path/to/interrupted_target_file