Возобновить рекурсивную передачу scp (с помощью rsync?)


14

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

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

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

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

Ответы:


10

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

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

Благодарю. Я не думал, что это сработало, потому что он начал бы перечислять все мои файлы, но я не понимал, что это показывает «передачу файлов», что просто означает, что файл обновлен. Правильно, когда мой перевод остановился, он поднялся с помощью реальных (более медленных) переводов.
физика Майкл

Хм, для меня ssh -i akey.pemэто требуется, и я не могу заставить -iчасть работать с этими командами.
изоморфизм

2
Если вы пытаетесь возобновить большой файл, эти опции могут быть полезны: --partial --inplace --no-whole-file.
Рафаэль Ксавьер

@kibitzer - как только он показал вам файл (на удаленном сервере), как вы начали передачу снова? Мой просто построить файл списка и показывает мне файл и сколько было загружено. Но он просто зависает без возможности продолжить или выполнить вывод. Передача началась снова или мне нужно что-то сделать, чтобы начать?
masterninja01

3
-lне обязательно. Это подразумевается-a
Гвидо

11

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

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

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


1
Это тоже работает, если вы
включите

Большинство моих передач rsync имеют тип «rsync -ahP что-то / пользователь @ хост: / где-то /». --Rsh = ssh совершенно не нужен. Затем также -P перетаскивает в --partial и --progress.
убийца

1

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

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


1

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.