14

У меня есть каталог а и каталог б. Они большие. б почти идентичен а. "почти" означает, что 4-5 файлов различаются, и я не знаю, какие они есть. Я хочу скопировать b поверх a, но только файлы, которые отличаются. я в башке

(нет, я не могу просто удалить a и заменить его на b, потому что 1) a управляется версией 2) полная копия (или mv) займет слишком много. Я хочу копировать только файлы, которые отличаются).

5 ответов5

17

Это также возможно сделать с помощью старого доброго cp:

Спасибо srcspider за напоминание мне использовать -T !

cp -ruT old-dir new-dir

14

Вы можете использовать rsync чтобы сделать это, я использую команду rsync -tr "folder to copy from" "folder to copy to"

например, rsync -tr /home/me/stuff/* /home/me/otherstuff/

1

Это МОЖЕТ быть сделано с хорошим старым, хотя и с немного другим форматом, чем указано выше. Вот как я это сделал:

cp -ru --target-directory="destination_path" source_path/*
1

Другим хорошим вариантом является Unison (http://www.cis.upenn.edu/~bcpierce/unison/), особенно если на самом деле нет "источника" и "места назначения". Каждый каталог является корневым, и Unison синхронизирует их и сохраняет метаданные для будущих синхронизаций. Он предлагает как командную строку, так и опцию GUI, которую можно легко запланировать через cron.

Я использую его для создания резервной копии моего Dropbox на локальном устройстве NAS, на котором не работает клиент Dropbox.

1

Вы можете различить 2 каталога.

diff -r dir1 dir2

он покажет вам список файлов, которые отличаются

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