Retomar transferência scp recursiva (com rsync?)

14

Eu estava transferindo vários milhares de arquivos cada ~ 1 MB via scp e minha conexão foi interrompida após os primeiros 2k arquivos. Eu queria saber se havia uma maneira de retomar a transferência recursiva sem iniciar novamente. Algo como

$ scp -r [email protected]:/datafiles/ ./
... Happy Transfer ...
...     BREAK!     ...
$ rsync -P [email protected]:/datafiles/ ./
... Continue transf...

O problema é que não consigo obter a sintaxe correta, se possível. Alguém pode esclarecer se / como isso pode ser feito?

PS. Se você especificar a barra após "arquivos de dados" na linha rsync, isso transfere o diretório ou seu conteúdo? Vi comentários conflitantes quando pesquisei no Google.

physicsmichael
fonte

Respostas:

10

se você estiver sincronizando de uma máquina local para um host remoto, isso funcionaria:

rsync -avzl -e ssh /directory/with/files/ [email protected]:/new/directory/
kibitzer
fonte
Obrigado. Não achei que isso estivesse funcionando porque começaria a listar todos os meus arquivos, mas não percebi que estava mostrando a "transferência de arquivos", o que significa apenas perceber que o arquivo estava atualizado. Certo, minha transferência foi interrompida com transferências reais (mais lentas).
physicsmichael
Hmm, para mim ssh -i akey.pemé necessário e não consigo que a -ipeça trabalhe com esses comandos.
Isomorphismes
2
Se você está tentando retomar um arquivo grande, esta opção pode ser útil: --partial --inplace --no-whole-file.
Rafael Xavier
@kibitzer - depois de mostrar o arquivo (no servidor remoto), como você iniciou a transferência novamente? O meu acabou de criar o arquivo de lista e me mostra o arquivo e quanto foi carregado. Mas ele simplesmente trava sem opção de continuar ou progredir na saída. A transferência foi iniciada novamente ou preciso fazer algo para iniciá-la?
precisa
3
-lnão é necessário. Está implícito por-a
Guido
11

A seguinte linha deve fazer o truque para isso:

rsync --partial --progress --rsh = ssh -r [email protected]: / datafiles / ./

Eu nunca usei isso para diretórios recursivos antes, mas quando enviei uma mensagem agora parecia funcionar como esperado.

Tyler
fonte
1
Isso funciona também, contanto que você incluir o -r =)
physicsmichael
A maioria das minhas transferências de rsync são do tipo "rsync -ahP algo / usuário @ host: / algum lugar /". O --rsh = ssh é completamente desnecessário. Em seguida, também -P arrasta em --partial e --progress.
killermist
1

O comando rsync que você listou funcionaria se você apenas adicionasse "-r". mas você também provavelmente desejaria "-a" e "-v".

E sobre a barra final, [email protected]: / data / é equivalente a / data / *, em outras palavras, se você adicionar uma barra, ela copiará todo o conteúdo. mas [email protected]: / data seria o próprio diretório [e, naturalmente, suas subpastas]

Matt
fonte
1

Mesclar as respostas de Kibitzer e Tyler funcionou melhor para mim:

rsync --partial --progress -avzl -e ssh /directory/with/files/ [email protected]:/new/directory/

(sincronizando recursivamente e mostrando o progresso de cada arquivo)

Tarc
fonte