Как синхронизировать две локальные файловые структуры - PullRequest
4 голосов
/ 12 апреля 2010

У меня есть два больших исходных дерева. Один из них имеет несколько устаревших файлов изображений. Я хотел бы автоматически обновить все старые файлы изображений (png, jpg, gif) в одном исходном дереве с помощью обновленных файлов изображений в другом исходном дереве.

Я использую Windows 7, но у меня установлен Cygwin. Я попытался использовать rsync до сих пор, но безуспешно.

Я надеялся, что смогу сделать что-то вроде:

rsync -r *.png newSourceTree oldSourceTree

Если есть какой-то другой способ достижения того же самого, например, скрипт на Perl или Bash, я бы тоже мог его использовать.

Любая помощь будет высоко ценится.

Спасибо, Джеймс.

Ответы [ 3 ]

2 голосов
/ 12 апреля 2010

Вы хотите:

rsync -av --include '*.png' --include '*/' --exclude '*' newSourceTree/ oldSourceTree/

Краткое объяснение: Вы хотите включить файлы png, включить все каталоги (чтобы он мог работать), а затем исключить все остальное. Включить / исключить обрабатываются слева направо и по умолчанию включают все.

1 голос
/ 13 апреля 2010

Unison предназначен именно для такого рода проблем. Вы можете синхронизировать все файлы, используя

unison oldTree newTree -force newer

Если вы хотите, чтобы он касался только файлов изображений, прочитайте документацию.

1 голос
/ 12 апреля 2010

А как же:

robocopy c:\source\ c:\destination\ *.png *.gif /s
...