У меня есть каталог а и каталог б. Они большие. б почти идентичен а. «почти» означает, что 4-5 файлов различаются, и я не знаю, какие они есть. Я хочу скопировать b поверх a, но только файлы, которые отличаются. я в баш.
(нет, я не могу просто удалить a и заменить его на b, потому что 1) a управляется версией 2) полная копия (или mv) займет слишком много. Я хочу копировать только файлы, которые отличаются).
linux
bash
cp
file-transfer
janesconference
источник
источник
rsync
вариант?Ответы:
Вы можете использовать
rsync
для этого, я использую командуrsync -tr "folder to copy from" "folder to copy to"
например
rsync -tr /home/me/stuff/* /home/me/otherstuff/
источник
Это также возможно сделать со старым добрым
cp
:Спасибо srcspider за напоминание об использовании
-T
!cp -ruT old-dir new-dir
источник
Другим хорошим вариантом является Unison ( http://www.cis.upenn.edu/~bcpierce/unison/ ), особенно если на самом деле нет «источника» и «места назначения». Каждый каталог является корневым, и Unison синхронизирует их и сохраняет метаданные для будущих синхронизаций. Он предлагает как командную строку, так и опцию GUI, которую можно легко запланировать через cron.
Я использую его для создания резервной копии моего Dropbox на локальном устройстве NAS, на котором не работает клиент Dropbox.
источник
Это МОЖЕТ быть сделано с хорошим старым, хотя и с немного другим форматом, чем указано выше. Вот как я это сделал:
источник
Вы можете различить 2 каталога.
diff -r dir1 dir2
он покажет вам список файлов, которые отличаются
источник