При копировании фотографий от переменных источников до моего основного архива я хотел бы скопировать только файлы, которые уже не находятся в архиве. rsync или подают сравнение заявок как WinMerge, и Комбинация, может казаться, не проверяет, существует ли файл уже с другим именем или в другой подпапке. Сначала копирование всех новых исходных изображений в архив, затем удаление дубликатов и затем организация файлов, кажется, дополнительная работа.
Если там способ проверить, какие файлы в исходной папке не найдены нигде в папке назначения? Подпапки должны быть проверены также. Файл может иметь другое имя или другое местоположение.
Использовать find
с md5sum
для получения контрольных сумм для всех файлов в источнике и месте назначения затем используйте comm
найти контрольные суммы, отсутствующие от места назначения.
Или Вы могли попробовать -y
опция rsync
.
Как сделать, это зависит от того, ли Ваши файлы изображений, поразрядно идентичные, или только визуально подобные (например, потому что у них могли бы быть различные комментарии или повторно сжатый, обрезанный...).
Если файлы идентичны, и можно переименовать их и в источнике и в архиве, легко переименовать их, чтобы всегда иметь то же имя. Можно сохранить старое название как символьную ссылку. Непротестированный:
for orig in *.jpg; do
canon=$(<"$orig" md5sum | sed 's/ .*//').jpg
mv -i "$orig" "$canon"
ln -s "$canon" "$orig"
done
Это предполагает, что Ваш архив является единственным каталогом. Если будут подкаталоги, то необходимо будет измениться *.jpg
кому: **/*.jpg
(требует удара 4 или zsh), и расположение для добавления правильной суммы ../
к ln
команда.
После того, как этот rsync скопирует только содержание и название новых фотографий и новые названия существующих фотографий.
Если можно переименовать файлы только в архиве, можно все еще расположить что-то с умным использованием символьных ссылок и вероятно rsync --copy-unsafe-links
.
Если файлы только визуально подобны, это более сложно, и не может быть полностью автоматизированного ответа (между обрезанной версией и низкокачественной версией, человек должен сделать выбор). Некоторые инструменты для сравнения визуально подобных изображений могут помочь, например, (интерактивный) gqview или findimagedupes (командная строка).
Обратите внимание, что, так как Вы не указываете свою операционную систему, я сделал предложения той работой над моей. Они будут работать над любой подобной Unix системой, включая OSX и Cygwin. Идея символьной ссылки будет также работать исходно над Windows XP и более новый (возможно, еще ранее), но требует устанавливающих дополнительных инструментов.
Целое "другое имя или в другой подпапке" вещь могло бы быть немного странным для выяснения... Уверенный можно сделать, делают хеш выдерживает сравнение, но поскольку целевой каталог растет, время, чтобы сделать, слияние увеличится.
Это не очень необычно, но что относительно того, чтобы использовать что-то как Robocopy для Windows?
robocopy /E source destination