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 me@host.com:/datafiles/ ./
... Happy Transfer ...
...     BREAK!     ...
$ rsync -P me@host.com:/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.

Respostas:


10

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

rsync -avzl -e ssh /directory/with/files/ you@host.com:/new/directory/

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 me@host.com: / datafiles / ./

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


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, me@site.com: / data / é equivalente a / data / *, em outras palavras, se você adicionar uma barra, ela copiará todo o conteúdo. mas me@site.com: / data seria o próprio diretório [e, naturalmente, suas subpastas]


1

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

rsync --partial --progress -avzl -e ssh /directory/with/files/ you@host.com:/new/directory/

(sincronizando recursivamente e mostrando o progresso de cada arquivo)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.