Попробуйте это:
cd /some/dir && rsync -av --files-from=<(find . -mtime 0 -printf "%p\n") <other stuff>
Это использует Замену Процесса <( )
заменять find
команда с именованным FIFO и дает имя того FIFO к rsync
читать как, что включать в синхронизацию.
В свете ответа Kyle это определенно появляется это --files-from
является более соответствующим, чем --include-from
; хотя оба будут работать. Ответ обновляется
#!/bin/sh
thefiles=/tmp/files.$$
LOCALDIR=/path/to/local/dir
REMOTEDIR=/path/to/remote/dir
REMOTEHOST=remote.host
changetime=24h
cd $LOCALDIR || { echo cd failed 1>&2; exit 1; }
trap 'rm -f $thefiles' 0
find . -type f -ctime -$changetime -print > $thefiles
rsync -v -n --archive --files-from=$thefiles . $REMOTEHOST:$REMOTEDIR
Этот сценарий, который выполнения находят в $LOCALDIR, выводя результаты в файл, затем говорит rsync использовать содержание файла в качестве списка файлов для передачи $REMOTEDIR каталога на $REMOTEHOST хоста. chdir's сценария в $LOCALDIR, потому что для команды rsync нужны относительные пути, не абсолютные. Я оставил-v-n в rsync args, таким образом, Вы видите то, что это обходится без копирования чего-либо; удалите-n, когда Вы удовлетворены, что сценарий делает то, что Вы хотите.
rsync
один путь, однонаправленная синхронизирующая система. Использоватьunison
если двухсторонний, двунаправленная синхронизирующая система необходима. – Nikhil Mulley 28.01.2012, 14:03