%20%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%20%D0%B2%20%D0%B4%D1%80%D1%83%D0%B3%D0%BE%D0%B9%2C%20%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D0%B2%20%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE%20%D0%BE%D1%82%D0%BB%D0%B8%D1%87%D0%B0%D1%8E%D1%89%D0%B8%D0%B5%D1%81%D1%8F%20%D1%84%D0%B0%D0%B9%D0%BB%D1%8B%3F.png)
У меня есть каталог a и каталог b. Они большие. b почти идентичен a. «почти» означает, что различаются 4-5 файлов, и я не знаю, какие именно. Я хочу скопировать b в a, но только те файлы, которые различаются. Я в bash.
(нет, я не могу просто удалить a и заменить его на b, потому что 1) a контролируется версиями 2) полная копия (или mv) заняла бы слишком много места. Я хочу скопировать только отличающиеся файлы).
решение1
Для этого вы можете использовать rsync
команду, которую я использую:rsync -tr "folder to copy from" "folder to copy to"
напримерrsync -tr /home/me/stuff/* /home/me/otherstuff/
решение2
Это также можно сделать с помощью старого доброго cp
:
Спасибо srcspider за напоминание об использовании -T
!
cp -ruT old-dir new-dir
решение3
Еще один хороший вариант — Unison (http://www.cis.upenn.edu/~bcpierce/unison/), особенно если на самом деле нет "источника" и "назначения". Каждый каталог является корнем, и Unison синхронизирует их и сохраняет метаданные для будущих синхронизаций. Он предлагает как командную строку, так и графический интерфейс, который можно легко запланировать через cron.
Я использую его для создания резервной копии моего Dropbox на локальном устройстве NAS, на котором не может работать клиент Dropbox.
решение4
Вы можете сравнить два каталога.
diff -r dir1 dir2
он покажет вам список файлов, которые отличаются