rsync только файлы, созданные или измененные после даты и времени

Цель состоит в том, чтобы rsync (или используя любые другие инструменты, которые дают желаемый результат) только файлы, которые созданы или изменены после даты. Он должен работать с именами файлов, содержащими пробелы (и / или другие символы, которые должны быть экранированы).

Мне удалось использовать эту команду на OS X 10.6.5:find . -newermt "2010-11-23 16:52:50" -type f -exec rsync -vuptn '{}' ../rsync_test/ ';' Я не думаю -newermt работает на более OS, чем OS X, хотя.

Проблема с этой командой в том, что она запускает rsync один раз для каждого найденного файла, и это, кажется, не является правильным способом сделать это. Я пытался изменить последний ; с + так что он ждет весь список файлов, но тормозит (я попробовал "+",\+ и другой способ сбежать).

Справочная информация: я пытаюсь сделать резервную копию моих файлов в удаленном месте. Файлы представляют собой большое количество фотографий в необработанном и другом формате (фотографии работают. Около 30 ГБ в день), хотя rsync'ing требует много времени из-за малой пропускной способности загрузки (ADSL отстой). Таким образом, идея состоит в том, чтобы иметь много дискового пространства в удаленном месте и переносить новые / измененные файлы на маленький внешний жесткий диск один раз в неделю. Затем можно легко использовать rsync для добавления новых / измененных файлов в удаленном месте. Для этого мне нужно синхронизировать новые / измененные файлы на внешнем жестком диске в течение недели, поэтому у меня всегда есть 2 копии каждого файла либо в удаленном расположении для файлов старше недели, либо на внешнем жестком диске для новых / измененных файлов с момента последней перевозки.

Я собирался запускать эту команду каждые 10 минут (cron) с указанием даты и времени с момента последнего запуска.

Можете ли вы исправить мою команду? Или у вас есть еще лучшее решение?

2 ответа

Решение

Я немного смущен тем, что ты пытаешься сделать. Rsync, сам по себе, будет передавать только новые / измененные файлы. Поэтому, если вы переносите данные на жесткий диск один раз в неделю, вы можете периодически запускать rsync, и пропускная способность будет не больше (и, возможно, меньше) того решения, которое вы предлагаете использовать find,

Вся эта работа с find Похоже, вы просто дублируете функции, которые уже есть.

Если вы действительно хотите использовать findтебе не нужно xargs или же xargs-подобные особенности; просто сделай это:

find ... -print | rsync ... --files-from=-

куда ... это "любые другие варианты, которые вы считаете подходящими". Это заставляет rsync читать список файлов из stdin.

+ работает только с GNU find, а OSX имеет BSD find. использование -print0 а также xargs -0 смоделировать это.

-newermt должно работать для достаточно новых версий GNU find. Он есть у моей машины Fedora 13 (GNU find 4.4.2), но не у моего компьютера CentOS 5 (GNU find 4.2.27). Вы должны быть в состоянии смоделировать это с помощью touch создать файл с соответствующим временем, а затем использовать -newer в теме.

Другие вопросы по тегам