Як я можу призупинити / відновити rsync


49

Як я можу призупинити запущений rsync?

Перший раз я зробив Ctrl+, Cщоб його вбити і використав -Pпрапор, щоб знову запустити. Це схильне до пошкодження поточної передачі файлів?

Другий раз я просто кладу MacOS спати (закриваючи кришку). Дивлячись на запущений процес, я бачу 2 (не впевнені, чому) зі статусом "S".

Спробував за допомогою

kill -SIGCONT

відновити процес, але це не має ефекту.

Відповіді:


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 може бути кращим рішенням.
malat

Дякую за таке детальне пояснення. Для уточнення: ctrl + z для паузи, fg для відновлення, bg для зупинки.
Praesagus

3
@Praesagus bgпоставити процес на b ack g раунд , а не на зупинку.
Jari Keinänen

--partialце те, що мені було потрібно. Я намагаюся скопіювати 21 ГБ даних, і серед них у мене 6,6 ГБ. Проблема полягає в тому, що мережа вбиває моє з'єднання після кількох ГБ передачі даних, для чого --partialсаме це мені потрібно.
AnthonyD973

20

Ctrl+ Zпризупинити та:

$ fg

продовжувати, використовувати

$ jobs

бачити призупинені робочі місця; bg [number]фоном їх; fg [number]випереджати його.


2
Ctrl+Sпризупиняє прокручування результатів, а не базову програму (якщо тільки вона не заблокована в очікуванні терміналу, щоб прийняти її вихід), і лише якщо ви її не відключили.
Жил "ТАК - перестань бути злим"

1
При поточному статусі "S" він не відновляється. Чи безпечно це вбити за допомогою Ctrl + C і запустити rsync знову? Які ще є варіанти? Маю це на увазі наступного разу, дякую.
qnoid

1
Також зауважте, що Ctrl-Z для призупинення процесу може, через деякий час, спричинити затримку будь-яких мережевих з'єднань TCP, встановлених цією програмою. Таким чином, залишаючи rsync призупиненим на декілька хвилин, швидше за все, це призведе до того, що він швидко перестане працювати із повідомленням про помилку, коли ви поставите його на перший план, і він виявить, що відкриті розетки повертають помилки з читання та запису.
Джим Денніс

8

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


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.