Есть ли в Linux какой-либо способ проверить, изменилось ли дерево каталогов?

#linux #directory #rootfs #cpio

#linux #каталог #rootfs #cpio

Вопрос:

Я создаю сценарий запуска QEMU, в котором я компилирую rootfs для cpio.gz каждый раз, когда я запускаю env. На данный момент это нормально, но когда корневые файлы увеличатся в размерах, это станет проблемой. Есть ли какой-либо способ проверить, соответствует ли данная структура каталогов и скомпилированный xxx.cpio.gz отличаются ли они друг от друга? Я имею в виду, что если файл добавляется в базовую структуру каталогов rootfs, то новый cpio.gz должен быть создан, но если это не так, то подойдет тот, который был скомпилирован при предыдущем запуске.

Заранее спасибо.

Ответ №1:

Вы можете использовать diff между каталогом rootfs и cpio.gz чтобы найти файлы, которые существуют только в каталоге rootfs.

Например, учитывая следующие каталоги a и b :

 a:
total 16
drwxr-xr-x  2 spiderpig spiderpig  4096 Oct  2 14:43 .
drwxr-xr-x 24 spiderpig spiderpig 12288 Oct  2 14:43 ..
-rw-r--r--  1 spiderpig spiderpig     0 Oct  2 14:43 in_both_dirs
-rw-r--r--  1 spiderpig spiderpig     0 Oct  2 14:43 only_in_a

b:
total 16
drwxr-xr-x  2 spiderpig spiderpig  4096 Oct  2 14:43 .
drwxr-xr-x 24 spiderpig spiderpig 12288 Oct  2 14:43 ..
-rw-r--r--  1 spiderpig spiderpig     0 Oct  2 14:43 in_both_dirs
-rw-r--r--  1 spiderpig spiderpig     0 Oct  2 14:43 only_in_b
  

вывод будет:

 spiderpig@linux-dev ~ $ diff --brief a b
Only in a: only_in_a
Only in b: only_in_b
  

Тогда вы можете знать, какие файлы копировать, а не копировать весь каталог. Обратите внимание, что у этого diff есть много опций, поэтому обязательно запустите diff --help его перед использованием.