Ocasionalmente, estou baixando um arquivo muito grande via scp e há uma pequena chance de cada vez que a conexão cai e corta a transferência no meio do caminho.
Existe uma maneira de retomar isso?
linux
file-transfer
scp
GJ.
fonte
fonte
dd
com tamanhos de bloco pequenos pode ser lento (apenas 350 kB / s aqui). Felizmente, asscp
transferê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!)rsys
na segunda linha é apenas um exemplo de nome de host e não um argumento especialssh
. Eu sugiro que você substitua poruser@host
para evitar confusão.Com
scp
, não.Se ambas as extremidades tiverem, você pode usar
rsync -LvzP remoteserver:path/to/file localfile
para transferir um único arquivo.fonte
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 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: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
fonte
Há outra solução (além das
rsync
oudd
soluções mencionadas aqui) que surpreende ninguém mencionar: é oreput
comandosftp
.fonte
Permite especificar o tempo limite para uma conexão. Pode impedir a sua conexão.
fonte
Sim, se ambas as extremidades oferecerem suporte ao sftp - after
scp remoteuser@remotehost:/absolute/filename .
falhar, você poderá continuar fazendosftp remoteuser@remotehost
e depoisreget /absolute/filename
continuar o download.fonte