14

Я передавал несколько тысяч файлов каждый ~ 1MB через scp, и мое соединение было разорвано после первых 2k файлов или около того. Я хотел знать, есть ли способ возобновить рекурсивную передачу без начала заново. Что-то вроде

$ scp -r me@host.com:/datafiles/ ./
... Happy Transfer ...
...     BREAK!     ...
$ rsync -P me@host.com:/datafiles/ ./
... Continue transf...

Проблема в том, что я не могу получить правильный синтаксис, если это возможно. Может ли кто-нибудь пролить свет на то, если / как это можно сделать?

PS. Если вы указываете косую черту после "datafiles" в строке rsync, передает ли это каталог или его содержимое? Я видел противоречивые комментарии, когда гуглил.

4 ответа4

11

Для этого нужно выполнить следующую строку:

rsync --partial --progress --rsh = ssh -r me@host.com:/datafiles/./

Я никогда не использовал это для рекурсивных каталогов прежде, но когда я написал это только сейчас, это, казалось, работало как ожидалось.

10

если вы выполняете rsyncing с локального компьютера на удаленный хост, это будет работать:

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

Объединение ответов Кибицера и Тайлера сработало для меня лучше всего:

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

(rsyncing рекурсивно и показывает прогресс каждого файла)

1

Команда rsync, которую вы перечислили, работала бы, если бы вы только добавили «-r». но вы также, скорее всего, захотите "-a" и "-v".

Что касается завершающей косой черты, me@site.com:/data/ эквивалентна /data/ *, другими словами, если вы добавите косую черту, она скопирует все содержимое. но me@site.com:/data будет сам каталог [и, естественно, его подпапки]

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .