У меня этот crontab запускается каждые 5 минут:
date >> ~/18/rsync.log
rsync -vaz user@r18:~/assets ~/18 >> ~/18/rsync.log 2>&1
Он добавляет это в файл журнала каждые 5 минут:
Thu Aug 16 13:00:01 MSK 2012
receiving incremental file list
sent 506 bytes received 541488 bytes 361329.33 bytes/sec
total size is 12954651209 speedup is 23901.84
А иногда добавляет актуальные журналы передачи:
Thu Aug 16 13:10:01 MSK 2012
receiving incremental file list
assets/response/20120816/
assets/response/20120816/1017161.doc
assets/response/20120816/1017162.doc
assets/response/20120816/1017163.doc
sent 568 bytes received 561686 bytes 1124508.00 bytes/sec
total size is 12954864201 speedup is 23040.95
Я хотел бы опустить пустой журнал передачи и сохранить актуальные списки передач. Есть ли способ настроить rsync для создания подробного вывода только при непустых передачах?
Не используйте параметр -v команды rsync, вместо этого используйте --out-format:
rsync --out-format="%n%L" -az user@r18:~/assets ~/18 >> ~/18/rsync.log 2>&1
Вывод будет только при передаче файлов и не будет вывода, когда вы этого не сделаете. Чтобы получить более интересный вывод, посмотрите справочную страницу rsync.conf в разделе «Формат журнала».
Хорошо, я написал гениальный сценарий оболочки для фильтрации бессмысленного спама, исходящего от rsync при пустых передачах. Если вы знаете способ лучше его обнаружить, добавьте свой ответ.
#!/bin/sh
LOG=$HOME/18/sync.log
TMP=$HOME/18/temp.log
SRC=user@r18:~/assets
DST=$HOME/18
echo >> $TMP
date >> $TMP
rsync -az $SRC $DST --log-file=$TMP --log-file-format='%10l %n%L'
[ `cat $TMP | wc -l` != 4 ] && cat $TMP >> $LOG
rm $TMP
Пожалуйста, проверьте параметры rsync --log-file-format и --log-file. Формат файла журнала по умолчанию добавляет 2 строки в файл журнала, даже если ничего не передается, но, пожалуйста, проверьте руководство. Возможно, при изменении формата журнала добавятся только записи с перенесенными файлами.
Тебе лучше использовать Наблюдатель бежать rsync
всякий раз, когда файл изменяется. Он основан на incron
но может отслеживать каталоги рекурсивно.
$ git clonet git://github.com/splitbrain/Watcher.git
$ cd Watcher
$ cp watcher.ini ~/.watcher.ini
~/.watcher.ini
[DEFAULT]
logfile=/tmp/watcher.log
pidfile=/tmp/watcher.pid
[job1]
watch=/home/quanta/x
events=create,delete
recursive=true
autoadd=true
command=rsync -vaz quanta@localhost:~/x ~/y --log-file=/home/quanta/rsync.log
Запуск демона:
$ ./watcher start
$ ps -ef | grep [w]atcher
quanta 3695 1 0 17:01 ? 00:00:00 /usr/bin/python2.7 ./watcher.py restart
rsync.log
2012/08/16 17:01:42 [3710] receiving file list
2012/08/16 17:01:42 [3724] .d..t...... x/
2012/08/16 17:01:42 [3724] >f.st...... x/a.txt
2012/08/16 17:01:42 [3724] sent 42 bytes received 180 bytes 444.00 bytes/sec
2012/08/16 17:01:42 [3724] total size is 45 speedup is 0.20
2012/08/16 17:01:42 [3731] receiving file list
2012/08/16 17:01:42 [3745] sent 14 bytes received 103 bytes 234.00 bytes/sec
2012/08/16 17:01:42 [3745] total size is 45 speedup is 0.38
2012/08/16 17:01:42 [3752] receiving file list
2012/08/16 17:01:42 [3766] sent 14 bytes received 103 bytes 234.00 bytes/sec
2012/08/16 17:01:42 [3766] total size is 45 speedup is 0.38
2012/08/16 17:01:42 [3773] receiving file list
2012/08/16 17:01:42 [3787] sent 14 bytes received 103 bytes 234.00 bytes/sec
2012/08/16 17:01:42 [3787] total size is 45 speedup is 0.38