Использование сценария оболочки для проверки изменений в 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.