синхронизирующие файлы рекурсивно между двумя папками, где файлы составляют меньше чем 24 старые часа

Сделайте каталог bin в /usr/local/share.

7
30.01.2012, 07:07
2 ответа

Попробуйте это:

cd /some/dir && rsync -av --files-from=<(find . -mtime 0 -printf "%p\n") <other stuff>

Это использует Замену Процесса <( ) заменять find команда с именованным FIFO и дает имя того FIFO к rsync читать как, что включать в синхронизацию.

Обновление

В свете ответа Kyle это определенно появляется это --files-from является более соответствующим, чем --include-from; хотя оба будут работать. Ответ обновляется

7
27.01.2020, 20:17
  • 1
    rsync один путь, однонаправленная синхронизирующая система. Использовать unison если двухсторонний, двунаправленная синхронизирующая система необходима. –  Nikhil Mulley 28.01.2012, 14:03
#!/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, когда Вы удовлетворены, что сценарий делает то, что Вы хотите.

3
27.01.2020, 20:17

Теги

Похожие вопросы