2

Может ли rsync сравнивать / копировать, основываясь только на дате мода и имени файла, игнорируя размер файла?

Контекст: я пытаюсь реализовать двухэтапное резервное копирование с помощью rsync. Первый этап - локальный, и у меня есть сценарий bash rsync для копирования файлов из исходного пути в локальное хранилище, и он выполняется ежечасно. Второй этап выполняется ночью и использует rsync для передачи всего нового / измененного в внешний центр обработки данных из локального хранилища. Проблема в том, что на месте ящики для хранения заполняются. Ни уменьшение резервных копий данных, ни увеличение емкости хранилища не является вариантом.

Я написал сценарий очистки для удаления файлов старше года каждый вечер из ящиков хранилища на месте и замены их пустыми сенсорными файлами, сохраняя временную метку исходных файлов - это предотвращает rsync от копирования тот же файл возвращается из источника после удаления файла назначения. Но я не могу понять, как сказать rsync игнорировать размеры файлов; Мне нужно, чтобы игнорировать сравнение / копирование в зависимости от даты мода и имени файла.

Я просматривал справочные страницы и искал, и это не похоже на то, что это возможно. Это правильно? Любые обходные идеи?

3 ответа3

1

rsync не может игнорировать размер файла.

Возможный обходной путь, если фактические данные файла не имеют значения, состоит в создании разреженных файлов назначения того же размера, что и исходные файлы. Пример:

dd if=/dev/urandom bs=1M count=4 of=a
rsync -a a b
truncate -s 0 b && truncate -r a b && touch -r a b

Теперь b пусто и не использует пробела (если файловая система поддерживает разреженные файлы), но все равно имеет тот же размер, что и a .

rsync -a a b
du -h a b
# 4.0M    a
# 0       b

Как видно из вывода du , b не был обновлен, поскольку он все еще не использует пробел.

0

Я думаю, что вы хотите, это:

--delete                delete extraneous files from dest dirs

Это удалит файлы из места назначения, если они были удалены в исходном каталоге.

Конечно, это будет означать, что вам нужно будет прекратить создавать пустые файлы вместо того, чтобы просто удалять просроченные файлы.

0

Вы можете использовать параметр --update для «пропуска файлов, которые новее на получателе», но вы не можете сохранить метку времени, когда вы касаетесь файлов-заполнителей (если страница руководства точна, когда говорит "новее" и не "равно" дата или новее ").

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .