Опции (-неравнодушный, - частичный dir) в rsync не работают, как я ожидал бы

Я пытался выяснить, как возобновить частичные передачи в rsync (в Windows, с помощью cygwin), не используя --inplace опция.

Я вижу, что rsync создает "частичные" файлы в целевом каталоге с именами как. [имя файла].2dxZ1a, и таким образом, в моем понимании, если я использовал --partial опция, rsync видела бы файл как это и возобновила бы передачу в этот файл. Но, я нахожу это, если я использую --partial опция и rsync обрабатывают концы, затем когда я запускаю команду rsync снова, это удаляет те частичные файлы. Возможно, эта опция на работах над кратким прерыванием передачи, но не, когда процесс заканчивается и запускается.

В дополнение к этой опции мне на самом деле понравилось --partial-dir опция, ожидая, что, если я specifiy --partial-dir=".rsync" (с или без окружающих кавычек), rsync создал бы каталог .rsync в целевом каталоге и передал бы файлы [dir]/.rsync, переместив их в [dir] однажды законченная передача (и удаляя [dir]/.rsync, после того как этому больше не был нужен он). Но, кажется, что rsync полностью игнорирует ту опцию и просто создает ее временные файлы в целевом каталоге как нормальный (и удаляет их на перезапуске).

Так, я задаюсь вопросом: я делаю что-то не так, или разве я просто не понимаю тех опций правильно?

Моя команда: rsync -rt --log-file="rsync.log" --partial-dir=".rsync" --del rsync://rsync-server:port/module/ /cygdrive/local/path/

6
задан 22.09.2010, 02:11

2 ответа

Я запускал эту команду из Windows Task Scheduler. Когда я принял управление и выполнил его от консоли (командная строка), опции работали ими should*.

Единственная разница между выполнением команд произошла, когда я пытался закончить их. В консоли, нажимая Ctrl+C, rsync заканчивается ошибкой

rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at ...

В Windows Task Scheduler, щелкая правой кнопкой по выполняющейся задаче и выбирая Конец привел к ошибке

rsync: read error: Connection reset by peer (104)

Так, я могу только предположить, что способ, которым Windows Task Scheduler заканчивает процесс, отличается от пути rsync, ожидает заканчиваться*, и это заставляет rsync закончиться, не делая его стандартных программ выхода.


* - я нашел больше о пути --partial и --partial-dir работа.

С --partial, rsync создает временный файл как, я видел, но когда rsync заканчивается (ожидаемым способом), он переименовывает тот временный файл к регулярному имени файла (например, переименовывает. [имя файла].2dxZ1a к [имени файла]), и затем делает копию частичного файла в новый временный файл на следующем запуске (например, копирует [имя файла] в. [имя файла].34cae2).

С --partial-dir, rsync заполняет временный файл, затем на завершении, перемещает временный файл в каталог, который Вы указываете как регулярное имя файла (например, переименовывает. [имя файла].2dxZ1a к [частичному dir] / [имя файла]). Затем на следующем запуске это копирует файл от [частичного dir] до нового временного файла в целевом каталоге.

7
ответ дан 07.12.2019, 15:53

Кажется, что у Вас есть верные мысли, но не зная Вашу целую команду невозможно сказать. Для меня эти опции работают как ожидаемый, когда я уничтожаю rsync (с ctrl-C) и перезапускаю его (GNU/Linux с rsync 3.0.6). Одна вещь сохранить состоит в том, что, если Вы используете - wholefile или какая-либо опция, которая подразумевает - wholefile (см. rsync страницу справочника), затем - неравнодушный (-dir) не будет работать, и Вы могли бы видеть признаки, которые Вы описываете. Кроме того, если это не может найти или создать каталог, указанный в - частичный dir, затем это тихо проигнорирует его. Другая возможность состоит в том, что - неравнодушный на самом деле работает на Вас, но Вы не можете сказать и думать, что это запускается, даже при том, что это не делает - я ожидал бы, что это удалит временные файлы, после того как это завершило передачу и обновило фактический файл. Можно контролировать это использование - прогресс - это запустится в 0%, но затем перейдет очень быстро к любому проценту, был уже передан, и продолжите оттуда. Для меньших файлов прогресс может быть слишком быстрым для наблюдения многого, так попробуйте чем-то большим (100 МБ или больше, в зависимости от скорости соединения до места назначения).Надеюсь, это поможет.Править: Я нашел, что - частичный dir, кажется, создает временный файл в целевом каталоге во время передачи, так же, как с - неравнодушный. Только, когда передача умирает, она перемещает это в частичный каталог файлов, который Вы указали, так первоначально кажется, что это не отличается, чем - неравнодушный.

2
ответ дан 07.12.2019, 15:53

Теги

Похожие вопросы