
Ocasionalmente, estou baixando um arquivo muito grande via scp e há uma pequena chance a cada vez de a conexão cair e interromper a transferência no meio do caminho.
Existe uma maneira de retomar isso?
Responder1
Você pode tentar a seguinte abordagem: em vez descpusarddpara pular a parte baixada e anexar o restante ao arquivo.
sofar=`ls -l ./destfile | awk '{print $5}'`
ssh user@host "dd if=./srcfile bs=1 skip=$sofar" >> ./destfile
Otimização possível: trabalhar com blocos grandes. Vamos deixar isso como lição de casa.
Responder2
Com scp
nenhum.
Se ambas as extremidades tiverem, você poderá usar rsync -LvzP remoteserver:path/to/file localfile
para transferir um único arquivo.
Responder3
Sim, existem maneiras de retomar a partir do ponto de interrupção, mas não é possível usar o scp. sftp reget filename
faz o que você precisa. Yarek e Grawity forneceram soluções válidas que marquei com +1 para ambos, mas para retomar de um ponto de interrupção, gosto do 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). Tenha em mente que os dois parâmetros finais devem ser considerados source_file e target_file nessa ordem. A sintaxe do nome do arquivo varia dependendo se o arquivo de origem ou de destino é local ou remoto. Se eu estivesse enviando (carregando) arquivos [de texto], reescreveria os exemplos fornecidos como:
#Do local ao remoto sofár=`ssh sistema_remoto ls -l arquivo_interrompido | awk '{imprimir $5}'`; dd if=arquivo_fonte bs=1 pular=$sofar | ssh sistema_remoto "cat >> ./arquivo_interrompido"
E à solução rsync, adiciono -e ssh
. Você deve considerar se precisa ou não de verbosidade, compactação, preservação de propriedade, permissões, carimbo de data / hora, diretórios recursivos, 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
Responder4
Sim, se ambas as extremidades suportarem sftp - após scp remoteuser@remotehost:/absolute/filename .
falhas, você poderá continuar fazendo sftp remoteuser@remotehost
e depois reget /absolute/filename
retomar o download.