Yanıtlar:
Aşağıdaki yargıyı deneyebilirsiniz: yerine scp kullanımı dd indirilen kısmını atlamak ve dosyaya kalanını eklemek için.
sofar=`ls -l ./destfile | awk '{print $5}'`
ssh rsys "dd if=./srcfile bs=1 skip=$sofar" >> ./destfile
Olası optimizasyon: büyük bloklarla çalışın. Bunu bir ödev olarak bırakalım.
dd
küçük blok boyutları yavaş olabilir (burada sadece 350 kB / s). Neyse ki, scp
transferler 1024 baytlık bloklar halinde geliyor gibi görünüyor. Dosyanızın böylece (veya başka, en yakın 1024 bayt bloğuna bunu kesiliyor tarafından), bunu şöyle hızlandırabilir ise: ssh rsys "dd if=./srcfile bs=1024 skip=$sofar" >> ./destfile
. (O $sofar
zaman atlamak için 1024 baytlık blok sayısı olmalı!)
rsys
İkinci satırda sadece özel bir argüman olmayan örnek bir hostname olduğunu fark etmem biraz zaman aldı ssh
. user@host
Karışıklığı önlemek için yerine koymanızı öneririm .
Evet, kesinti noktasından devam etmenin yolları vardır, ancak scp kullanarak mümkün değildir. sftp reget filename
ihtiyacınız olanı yapar. Yarek ve Grawity, her ikisine de + 1'lediğim geçerli çözümler sağladı, ancak bir kesinti noktasından devam etmek için rsync'i seviyorum. Verilen örnek komutların her ikisi de, uzak sunucudan yerel iş istasyonunuza (indirme) bir dosya aldığınız varsayılmaktadır. Lütfen son iki parametrenin kaynak_dosyası ve hedef_dosyası olarak bu sırayla değerlendirilmesi gerektiğini unutmayın. Dosya adının sözdizimi, kaynak veya hedef dosyanın yerel veya uzak olmasına bağlı olarak değişir. [Metin] dosyaları gönderip (karşıya yüklüyordum), sağlanan örnekleri şöyle yeniden yazardım:
# Yerelden uzaktan kumandaya sofar = `ssh uzak_sistem ls -l interrupted_file | awk '{print $ 5}' '; gg if = kaynak_dosyası bs = 1 atlama = $ sofar | ssh remote_system "cat >> ./interrupted_file"
Ve rsync çözümüne ekliyorum -e ssh
. -L parametresi ile ilgili ayrıntı ayrıntılarına, sıkıştırmaya, sahipliğin korunmasına, izinlere, zaman damgasına, recurse dizinlerine vb. İhtiyacınız olup olmadığını göz önünde bulundurmalısınız. Sembolik bağlantılara başvurmak yerine bağlantı olarak kalmasını isteyebilirsiniz.
rsync -P -e ssh local_source_file remoteserver:path/to/interrupted_target_file
scp -o ConnectTimeout 60
Bir bağlantı için zaman aşımını belirtmenize izin verir. Bağlantınızın kesilmesini engelleyebilir.
Evet, eğer her iki uç da sftp'yi destekliyorsa - scp remoteuser@remotehost:/absolute/filename .
başarısız olduktan sonra , devam ettirerek sftp remoteuser@remotehost
ve ardından reget /absolute/filename
indirmeye devam edebilirsiniz.