Назад | Перейти на главную страницу

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

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

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

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

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

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

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

Я немного запутался в том, что вы пытаетесь сделать. 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 в теме.