Перезаписать файл при копировании, если содержимое из них не совпадает

У меня есть много файлов с одной стороны (A) и много других файлов в другом месте (B)

Я копирую А в Б, там много одинаковых файлов, но содержимое может быть разным!

Обычно я использовал mc (Midnight Commander) для этого и выбрал "Перезаписать, если другой размер". Но есть ситуация, когда размер одинаков, а содержание разное. В этом случае mc сохраняет файл в месте B и не перезаписывает его.

В диалоге перезаписи mc есть работа "Обновить", я не знаю, что она делает? В справке нет такой информации, может быть это решение?

Поэтому я ищу решение, которое может помочь мне скопировать все файлы из A в B и перезаписать файлы в B месте, если они существуют И содержимое отличается от A.

если файл в месте "B" существует (то же имя), а содержимое отличается, его нужно каждый раз перезаписывать файлом из места "A".

Вы знаете какое-нибудь решение?

4 ответа

Решение

Вы пробовали командную строку:

cp -ru A/* B/

Следует рекурсивно копировать все измененные файлы (более поздние временные метки) из каталога A в каталог B.

Вы также можете использовать -a вместо -r в командной строке, в зависимости от того, что вы хотите сделать. Увидеть cp справочная страница.

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

#> rsync -cr <directory to copy FROM> <directory to copy TO>

Rsync копирует файлы либо на удаленный хост, либо с него, либо локально на текущий хост (он не поддерживает копирование файлов между двумя удаленными хостами).

-c, --checksum    skip based on checksum, not mod-time & size
-r, --recursive   recurse into directories

Увидеть man rsync для больше вариантов и деталей.

Возможно, вы захотите сохранить какой-нибудь индексный файл, содержащий хэш SHA-1 файлов, который вы создаете при их записи. Затем вы можете вычислить исходный хеш и сравнить его с целевым хешем из индексного файла. Это будет работать, только если этот процесс является единственным способом записи файлов в место назначения.

http://linux.math.tifr.res.in/manuals/man/mc.html

Диалог замены отображается, когда вы пытаетесь скопировать или переместить файл поверх существующего файла. Диалог показывает даты и размеры обоих файлов. Нажмите кнопку Yes, чтобы перезаписать файл, кнопку No, чтобы пропустить файл, кнопку alL, чтобы перезаписать все файлы, кнопку nonE, чтобы никогда не перезаписывать, и кнопку Update, чтобы перезаписать, если исходный файл новее, чем целевой файл. Вы можете прервать всю операцию, нажав кнопку Прервать

Другие вопросы по тегам