Необходимо рассмотреть использование 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 для предварительной обработки вывода.
Можно приостановить любую программу путем отправки ему a TSTP
(вежливый) или STOP
(насильственный) сигнал. На терминале Вы работали rsync
в, нажатие Ctrl+Z отправляет TSTP
. Резюме с fg
или bg
команда в терминале или a CONT
сигнал.
Безопасно уничтожить процесс rsync и выполнить все это снова; это продолжится, где это кончило. Это может быть немного неэффективно, особенно если Вы не передали --partial
(включенный в -P
), потому что rsync
проверит все файлы снова и обработает файл, на котором это было прервано с нуля.
Могут быть необычные комбинации опций, которые приведут к некоторым файлам, не синхронизируемым правильно, возможно --inplace
с чем-то еще, но я думаю, что никакая единственная опция не вызовет это.
Если Вы разъединяете свой ноутбук и повторно подключаете его где-то в другом месте, это может получить другой IP-адрес. Затем соединение TCP, используемое rsync, было бы разъединено, таким образом, необходимо будет уничтожить его и запуститься снова. Это может также произойти, если Вы приостанавливаете свой ноутбук, и соединение TCP испытывает таймаут. Тайм-аут в конечном счете отфильтрует к прикладному уровню, но он может требовать времени. Безопасно нажать Ctrl+C и выполнить rsync снова.
Ctrl+Z для приостановки, и:
$ fg
для продолжения использовать
$ jobs
видеть приостановленные задания; bg [number]
к фону их; fg [number]
к переднему плану это.
Ctrl+S
только приостанавливает прокрутку вывода, не базовой программы (если это не заставляет заблокированное ожидание терминала принимать свой вывод), и только если Вы не отключили его.
– Gilles 'SO- stop being evil'
16.01.2011, 15:31
Выполненный rsync
с --partial
флаг. Это затем сохранит частичные передачи и возобновит частичные файлы при запуске.
Здесь упоминалось использование флага - частичный
работает, он нужен Следует отметить, однако, что он возобновляется только тогда, когда при возобновлении используется флаг - append
или - append-verify
.
- partial
создает скрытый файл для файла, который не завершил процесс синхронизации, файл сохраняется, когда вы прерываете синхронизацию. Он продолжает завершать файл, когда вы используете - append
после возобновления, в противном случае, когда не используете - append
, неполный скрытый файл сохраняется и остается неполным.
Вывод: Вы можете просто прервать rsync --partial
, используя Ctrl + C , если вы используете rsync --append
] при возобновлении
(Источник: Может ли rsync возобновить работу после прерывания? получено 5 апреля 2016 г.)
rsync -avh
просто освободите текущий скопированный файл, если файл является большим, Вы потеряли довольно много времени. Возможно,Ctrl+z
перемещение временного файла (запускаются с точки), и затемCtrl-C
rsync мог бы быть лучшим решением. – malat 01.10.2014, 11:49bg
поместить процесс в фон, не остановиться. – Jari Keinänen 03.07.2016, 22:14