Как я могу приостановить/возобновить rsync

Необходимо рассмотреть использование inotifywait, как пример:

inotifywait -m /path -e create -e moved_to |
    while read path action file; do
        echo "The file '$file' appeared in directory '$path' via '$action'"
        # do something with the file
    done

В Ubuntu inotifywait обеспечивается inotify-tools пакет. С версии 3.13 (текущий в Ubuntu 12.04) inotifywait будет включать имя файла без-f опции. Более старые версии, возможно, должны быть принуждены. То, что важно для примечания, то, что -e опция к inotifywait лучший способ состоит в том, чтобы сделать фильтрацию событий. Кроме того, Ваш read команда может присвоить позиционный вывод в несколько переменных, которые можно принять решение использовать или проигнорировать. Нет никакой потребности использовать grep/sed/awk для предварительной обработки вывода.

50
16.01.2011, 21:18
4 ответа

Можно приостановить любую программу путем отправки ему a TSTP (вежливый) или STOP (насильственный) сигнал. На терминале Вы работали rsync в, нажатие Ctrl+Z отправляет TSTP. Резюме с fg или bg команда в терминале или a CONT сигнал.

Безопасно уничтожить процесс rsync и выполнить все это снова; это продолжится, где это кончило. Это может быть немного неэффективно, особенно если Вы не передали --partial (включенный в -P), потому что rsync проверит все файлы снова и обработает файл, на котором это было прервано с нуля.

Могут быть необычные комбинации опций, которые приведут к некоторым файлам, не синхронизируемым правильно, возможно --inplace с чем-то еще, но я думаю, что никакая единственная опция не вызовет это.

Если Вы разъединяете свой ноутбук и повторно подключаете его где-то в другом месте, это может получить другой IP-адрес. Затем соединение TCP, используемое rsync, было бы разъединено, таким образом, необходимо будет уничтожить его и запуститься снова. Это может также произойти, если Вы приостанавливаете свой ноутбук, и соединение TCP испытывает таймаут. Тайм-аут в конечном счете отфильтрует к прикладному уровню, но он может требовать времени. Безопасно нажать Ctrl+C и выполнить rsync снова.

62
27.01.2020, 19:33
  • 1
    На самом деле уничтожение rsync -avh просто освободите текущий скопированный файл, если файл является большим, Вы потеряли довольно много времени. Возможно, Ctrl+z перемещение временного файла (запускаются с точки), и затем Ctrl-C rsync мог бы быть лучшим решением. –  malat 01.10.2014, 11:49
  • 2
    Спасибо за такое подробное объяснение. Разъясниться: ctrl+z для приостановки, fg для возобновления, bg для остановки. –  Praesagus 30.10.2015, 18:20
  • 3
    @Praesagus bg поместить процесс в фон, не остановиться. –  Jari Keinänen 03.07.2016, 22:14

Ctrl+Z для приостановки, и:

$ fg

для продолжения использовать

$ jobs

видеть приостановленные задания; bg [number] к фону их; fg [number] к переднему плану это.

20
27.01.2020, 19:33
  • 1
    Ctrl+S только приостанавливает прокрутку вывода, не базовой программы (если это не заставляет заблокированное ожидание терминала принимать свой вывод), и только если Вы не отключили его. –  Gilles 'SO- stop being evil' 16.01.2011, 15:31
  • 2
    С текущим состоянием 'S' это не возобновляется. Действительно ли безопасно уничтожить его с помощью Ctrl+C и выполнить rsync снова? Что другие опции я имею? Будет иметь это в памяти следующим разом хотя, спасибо. –  qnoid 16.01.2011, 15:32
  • 3
    Также обратите внимание, что Ctrl-Z для приостановки процесса вероятен, через какое-то время, привести к тайм-ауту любых сетевых соединений TCP, которые были установлены той программой. Таким образом отъезд rsync, приостановленного в течение больше, чем нескольких минут, очень вероятно заставит это выходить резко с сообщением об ошибке, когда Вы отложите его на переднем плане, и он находит, что его открытые сокеты возвращают ошибки из чтений и записей. –  Jim Dennis 17.01.2011, 16:18

Выполненный rsync с --partial флаг. Это затем сохранит частичные передачи и возобновит частичные файлы при запуске.

8
27.01.2020, 19:33

Здесь упоминалось использование флага - частичный работает, он нужен Следует отметить, однако, что он возобновляется только тогда, когда при возобновлении используется флаг - append или - append-verify .

- partial создает скрытый файл для файла, который не завершил процесс синхронизации, файл сохраняется, когда вы прерываете синхронизацию. Он продолжает завершать файл, когда вы используете - append после возобновления, в противном случае, когда не используете - append , неполный скрытый файл сохраняется и остается неполным.

Вывод: Вы можете просто прервать rsync --partial , используя Ctrl + C , если вы используете rsync --append ] при возобновлении

(Источник: Может ли rsync возобновить работу после прерывания? получено 5 апреля 2016 г.)

5
27.01.2020, 19:33

Теги

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