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
в теме.