LINUX.ORG.RU

Сравнение 2 директорий с выводом в 3


0

2

Нужно сравнить 2 каталога и вывести этот результат в 3 каталог, т.е что то типа diff /home/dir1/ /home/dir2/ > /home/dir3/ (те файлы которые есть в первом каталоге, но нет во втором скопировать в третий) Желательно скриптом

  1. find'ом построить список файлов в директориях 1 и 2
  2. sort -u оба списка
  3. diff или comm для получения строк списка 1, которых нет в списке 2
  4. while read список 1, cp файл dir3
Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от novitchok

Нельзя, у ls -R вывод некрасивый - обрабатывать потом сложно будет. А find сразу все с относительными путями выведет...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от novitchok

Вот именно. Кстати, да - ключ "-u" у sort не нужен.

А вообще, если эта тема - попытка инкрементного резервирования, то лучше всего такой способ:

первая копия создается путем полного копирования всего содержимого директории. В начале копирования где-нибудь в определенном месте ФС надо создать файлик .timestamp

последующие копии заключаются в том, что нужные для копирования файлы ищутся посредством find . -newer .timestamp -exec cp {} /path/to/backup \;

после копирования делаем rm -f .timestamp; touch .timestamp

Eddy_Em ☆☆☆☆☆
()

Если нужно сравнивать по содержимому файлов, поможет fdupes -1fr /home/dir1/ /home/dir2/.

anon_666
()
Ответ на: комментарий от Eddy_Em

>после копирования делаем rm -f .timestamp; touch .timestamp

rm -f не нужен, touch меняет дату модификации существующего файла

Pinkbyte ★★★★★
()
Ответ на: комментарий от Eddy_Em

1.find'ом построить список файлов в директориях 1 и 2 2.sort -u оба списка 3. diff или comm для получения строк списка 1, которых нет в списке 2 4. while read список 1, cp файл dir3

Не понял смысла действий Выполняю

diff <(find /home/Ant/dir1/ -name 'a*'|sort|tee /home/Ant/d1) <(find /home/Ant/dir2/ -name 'a*'|sort|tee /home/Ant/d2)

Получаю сумму строк 1 и 2 файлов, т.к пути у них разные dir1 и dir2 Что делаю не так Если несложно приведите пример

the_gunner
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.