Linux 中有什么方法可以检查目录树是否已更改?
Is there any way in Linux to check if directory tree has changed?
我正在创建一个 QEMU 启动脚本,每次启动 env 时我都会在其中编译一个 rootfs 到 cpio.gz。目前这很好,但是当 rootfs 变大时,就会出现问题。有什么方法可以检查给定的目录结构和编译后的 xxx.cpio.gz 是否不同?我的意思是,如果一个文件被添加到基本的 rootfs 目录结构中,那么必须创建一个新的 cpio.gz,但如果不是这样,那么在之前的启动中编译的那个就可以了。
提前致谢。
您可以在 rootfs 目录和 cpio.gz 之间使用 diff
来查找仅存在于 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
我正在创建一个 QEMU 启动脚本,每次启动 env 时我都会在其中编译一个 rootfs 到 cpio.gz。目前这很好,但是当 rootfs 变大时,就会出现问题。有什么方法可以检查给定的目录结构和编译后的 xxx.cpio.gz 是否不同?我的意思是,如果一个文件被添加到基本的 rootfs 目录结构中,那么必须创建一个新的 cpio.gz,但如果不是这样,那么在之前的启动中编译的那个就可以了。
提前致谢。
您可以在 rootfs 目录和 cpio.gz 之间使用 diff
来查找仅存在于 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