Використовуючи скрипт оболонки, щоб перевірити, чи внесла rsync якісь зміни


10

У мене є сценарій bash, який містить два каталоги rsync. Іноді є зміна, шанси - немає нічого.

Я хочу запустити команду лише в тому випадку, якщо rsync насправді внесла зміни (додати / оновити файл). Інакше я хочу просто пропустити це. Чи є відповідь на повернення, яку я повинен дивитись?

Відповіді:


11

Якщо ви використовуєте параметр -i (а не використовуєте опцію -v), rsync буде друкувати рядки в STDOUT для будь-яких змін, які були внесені. Залежно від сценарію, це може виглядати так

if [ -n "$(rsync -i /dir1 /dir2)" ]; then
  run_command;
fi

Здається, я роблю саме те, що хочу ... дякую. Не думав використовувати такий прапор -i.
raccettura

Для уточнення, якщо ви хочете запустити скрипт, лише якщо було внесено зміни, то ==слід !=.
hamx0r

Ну як є, цей код неправильний від того, що я бачив. Що стосується цього коду, ви отримуєте його: Rsync запустив FINE або HAS ERROR працює, але цей код не перевіряє, чи відбулися зміни. Я не знаю, чи могла це зробити інша версія Rsync, але я використовую RSYNC в Raspbmc (у нас є стара версія) та OSMC. Це сумно, оскільки RSYNC здається чудовим інструментом.

2
З -iпрапором - версія rsync 3.1.1виводиться, sending incremental file listколи ніяких змін не проводиться.
Дор
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.