rsync только файлы, созданные или измененные после даты и времени - PullRequest
2 голосов
/ 23 ноября 2010

Цель состоит в том, чтобы 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 ГБ в день), хотя rsync'ing требует много времени из-за малой пропускной способности загрузки (ADSL отстой).Таким образом, идея состоит в том, чтобы иметь много дискового пространства в удаленном месте и переносить новые / измененные файлы на маленький внешний жесткий диск один раз в неделю.Затем можно легко использовать rsync для добавления новых / измененных файлов в удаленном месте.Для этого мне нужно синхронизировать новые / измененные файлы на внешнем жестком диске в течение недели, поэтому у меня всегда есть 2 копии каждого файла либо в удаленном расположении для файлов старше недели, либо на внешнем жестком диске для новых / измененных файловс момента последнего транспорта.

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

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

Ответы [ 3 ]

3 голосов
/ 24 ноября 2010

Я снова отправил вопрос на Ошибка сервера и получил нужный мне ответ.

Параметр --files-from=FILE действительно может использоваться с -, поэтому он принимает стандартный ввод (где можно использовать команду find и затем передать ее в rsync). Посмотрите ответ «Ошибка сервера» для более подробной информации.

0 голосов
/ 23 ноября 2010

Rsync не должен удалять файлы по умолчанию, поэтому вы можете просто rsync с меньшего жесткого диска на больший диск, и rsync будет копировать и обновлять любые файлы, но он не будет удалять отсутствующие файлы. Если он все еще кажется удаленным, вы можете попробовать опции --max-delete=0. Возможно, это сработает.

0 голосов
/ 23 ноября 2010

Я не знаю, какую платформу вы планируете использовать, но если вы хотите сделать это в Powershell, вы можете использовать следующую команду:

get-childitem -Recurse | where-object {$_.LastWriteTime -gt "2010/11/23 00:00:00"}

Чтобы rsync сделал то, что вы хотитепохоже, вам нужно сгенерировать список файлов (из вашей команды или из моей команды), а затем использовать опцию --files-from = FILE в rsync (так что это будут две команды)

...