Respostas:
Você pode tentar o seguinte procedimento: em vez de scp, use dd para pular a parte baixada e anexar o restante ao arquivo.
sofar=`ls -l ./destfile | awk '{print $5}'`
ssh rsys "dd if=./srcfile bs=1 skip=$sofar" >> ./destfile
Possível otimização: trabalhe com grandes blocos. Vamos deixar isso como uma lição de casa.
ddcom tamanhos de bloco pequenos pode ser lento (apenas 350 kB / s aqui). Felizmente, as scptransferências parecem ocorrer em blocos de 1024 bytes. Se assim for para o arquivo (ou mais, truncando-lo para o 1024 byte bloco mais próximo), você pode acelerá-lo como este: ssh rsys "dd if=./srcfile bs=1024 skip=$sofar" >> ./destfile. (Note-se que $sofar, em seguida, tem que ser o número de blocos de 1024 bytes para pular!)
rsysna segunda linha é apenas um exemplo de nome de host e não um argumento especial ssh. Eu sugiro que você substitua por user@hostpara evitar confusão.
Com scp, não.
Se ambas as extremidades tiverem, você pode usar rsync -LvzP remoteserver:path/to/file localfilepara transferir um único arquivo.
Sim, existem maneiras de retomar a partir do ponto de interrupção, mas não é possível usar o scp. sftp reget filenamefaz o que você precisa. Yarek e Grawity forneceram soluções válidas que eu +1 para ambos, mas, para retomar de um ponto de interrupção, eu gosto de rsync. Os comandos de exemplo fornecidos assumem que você está recuperando um arquivo de um servidor remoto para sua estação de trabalho local (download). Lembre-se de que os dois parâmetros finais devem ser considerados no arquivo de origem e no arquivo de destino nessa ordem. A sintaxe do nome do arquivo varia de acordo com o local ou o arquivo de destino ser local ou remoto. Se eu estivesse enviando (carregando) arquivos [texto], reescreveria os exemplos fornecidos como:
# Do local para o remoto
sofar = `ssh remote_system ls -l interrupted_file | awk '{print $ 5}' ';
dd se = arquivo_de_arquivo bs = 1 pular = $ sofar | ssh remote_system "cat >> ./interrupted_file"
E para a solução rsync, eu adiciono -e ssh. Você deve considerar se precisa ou não de verbosidade, compactação, preservar propriedade, permissões, carimbo de data e hora, diretórios de recuperação, etc. Verifique as páginas de manual e o google em relação ao parâmetro -L. Você pode querer que os links simbólicos permaneçam como links em vez de referenciá-los.
rsync -P -e ssh local_source_file remoteserver:path/to/interrupted_target_file
scp -o ConnectTimeout 60
Permite especificar o tempo limite para uma conexão. Pode impedir a sua conexão.
Sim, se ambas as extremidades oferecerem suporte ao sftp - after scp remoteuser@remotehost:/absolute/filename .falhar, você poderá continuar fazendo sftp remoteuser@remotehoste depois reget /absolute/filenamecontinuar o download.