Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > *nix > rsync синхронизация папок


Автор: v4567 31.05.17, 18:39
Есть две папки dir1 и dir2

В dir2 файлы всё время прибавляются и обновляются.

Необходимо в dir1 удалить старые файлы - (старее некоторого времени), обновить оставшиеся и загрузить новые не загрузив при этом те которые были удалены ранее в dir1.

Можно сделать двумя командами:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    find /dir1 -type f -mtime +5 -delete
    find /dir2 -type f -mtime -5 | xargs -n 1 -I % cp  -fdp "%"  /dir1


но тогда cp перезапишет и не обновлённые файлы, а это лишнее время. Если вместо второй строки использовать rsync то она запишет и те файлы которые не нужны, старые по времени которые были удалены при помощи find - первая строка.

Как перезаписать только те файлы которые обновились и записать новые?

Автор: JoeUser 31.05.17, 19:11
Какая файловая система? Да, в принципе, и какая ось или дистрибут?

Автор: v4567 31.05.17, 19:28
Что то я совсем.........
надо вот так:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    find /dir1 -type f -mtime +5 -delete
    find /dir2 -type f -mtime -5 | xargs -n 1 -I % rsync --progress "%" /dir1


Всё вопрос закрыт.

Автор: grgdvo 01.06.17, 20:10
Хоть и закрыт вопрос, у rsync есть флаг --delete-excluded

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)