Мне было интересно, если есть какой-либо метод синхронизации, который не копирует файлы, если они уже находятся в папке назначения.
Позволь мне объяснить:
Я сделал несколько фотографий и положил их в папку на своем ноутбуке. Чтобы создать их резервные копии на моем сервере Ubuntu, я просто запустил rsync -vrutP source des/ti/na/tion/
.
Затем я решил поместить все RAW в подпапку на моем ноутбуке (source/RAW
), а JPG - в другую подпапку (source/JPG
).
Теперь, если я хочу отразить это на сервере, я должен запустить rsync -vrutP --delete source/ des/ti/na/tion/
но если я сделаю это, все мои файлы будут удалены с сервера, а затем скопированы из мой ноутбук на сервер. У меня есть несколько гигабайт картинок, и это не проблема, если у меня есть время ждать и соединение Ethernet, а не WiFi.
Но разве не было бы НАМНОГО быстрее, даже если требовалось бы гораздо больше ресурсов ЦП, если бы существовала команда, которая сравнивала файлы в корневой папке "источник" и применяла только разность положений между источником и местом назначения? Для перечисления всех файлов потребовалось бы больше ресурсов ЦП, но мне почти не требовалась пропускная способность для передачи файлов, которые мне на самом деле не нужны для передачи, потому что они уже находятся в месте назначения, если событие находится в другом месте. Конечно, обязательной функцией будет дельта-синхронизация, которая также обнаружит, точно ли существующие (но перемещенные) файлы совпадают с файлами в исходной папке.
Я знал о программном обеспечении, делающем это (Syncovery, Goodsync), но на самом деле я хотел знать, есть ли какая-либо команда, делающая это в Linux и в Windows.