Цель состоит в том, чтобы 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
в теме.