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

49

Как я могу приостановить rsync, который работает?

В первый раз я сделал Ctrl+, Cчтобы убить его, и -Pснова использовал флаг. Это склонно к повреждению текущей передачи файла?

Второй раз я просто усыпляю MacOS (закрыв крышку). Глядя на запущенный процесс, я вижу 2 (не уверен почему) со статусом «S».

Пробовал с помощью

kill -SIGCONT

возобновить процесс, но это не имеет никакого эффекта.

qnoid
источник

Ответы:

61

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

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

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

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

Жиль "ТАК - перестань быть злым"
источник
1
На самом деле убийство rsync -avhпросто приводит к потере текущего копируемого файла, если файл большого размера, вы потеряли довольно много времени. Может быть, лучше Ctrl+zпереместить временный файл (начните с точки), а затем Ctrl-Crsync.
Малат
Спасибо за такое подробное объяснение. Чтобы уточнить: Ctrl + Z для паузы, FG для возобновления, BG для остановки.
Praesagus
3
@Praesagus bgпоставить процесс на б извед г круглый , не останавливаться на достигнутом .
Яри ​​Кейнянен
--partialэто то, что мне нужно Я пытаюсь скопировать 21 ГБ данных, и среди них у меня есть файл 6,6 ГБ. Проблема в том, что сеть убивает мое соединение после нескольких гигабайт передачи данных, для которых --partialэто именно то, что мне нужно.
AnthonyD973
20

Ctrl+ Zприостановить и:

$ fg

продолжить, использовать

$ jobs

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

gauteh
источник
2
Ctrl+Sтолько приостанавливает вывод прокрутки, а не лежащую в основе программу (если она не блокируется в ожидании, пока терминал примет ее вывод), и только если вы ее не отключили.
Жиль "ТАК - перестань быть злым"
1
С текущим статусом «S» он не возобновляется. Безопасно ли убить его с помощью Ctrl + C и снова запустить rsync? Какие еще варианты у меня есть? Будет иметь это в виду в следующий раз, хотя, спасибо.
qnoid
1
Также обратите внимание, что Ctrl-Z для приостановки процесса может через некоторое время привести к таймауту любых сетевых подключений TCP, которые были установлены этой программой. Таким образом, если приостановить rsync более чем на несколько минут, вполне вероятно, что он внезапно завершится с сообщением об ошибке, когда вы вернете его на передний план, и обнаружит, что его открытые сокеты возвращают ошибки чтения и записи.
Джим Деннис
8

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

bahamat
источник
5

Люди здесь упоминали, что использование --partialфлага работает, однако следует отметить, что оно возобновляется только при использовании флага --appendили --append-verifyпри возобновлении.

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

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

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

Мехди Неллен
источник
поэтому, если я использовал rsync --avP <source> <destination>, я должен приостановить его с помощью CTRL + C, а затем возобновить, просто набрав rysnc --append?
короля
@kingmakerking да
Мехди Неллен
@kingmakerking: Нет. Вам все еще нужны опции вашего первого rsync, а также источник и место назначения. Чтобы возобновить, перезапустите предыдущую команду rsync и добавьте --append к существующим параметрам.
Mivk