Использование сценария оболочки для проверки изменений в rsync

10

У меня есть скрипт bash, который содержит две директории rsync. Иногда есть изменения, шансы, что нет ничего.

Я хочу выполнить команду, только если rsync действительно внес изменения (добавить / обновить файл). В противном случае я хочу просто пропустить это. Есть ли обратный ответ, на который я должен смотреть?

raccettura
источник

Ответы:

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когда не производится никаких изменений.
Дор