当复制与目标目录结构相同的源目录时,linux复制命令如何工作

当复制与目标目录结构相同的源目录时,linux复制命令如何工作

假设我有一个具有以下目录结构的源目录:

+-- rootfs
|   +-- bin
|   |   +-- cat
|   |   +-- chmod
|   |   +-- cp
|   |   +-- ls
|   |   +-- echo
|   |   +-- grep
|   +-- usr
|   |   +-- bin
|   |   |   +-- a
|   |   |   +-- b
|   |   |   +-- c
|   +-- lib
|   |   +-- libc.so.6
|   |   +-- libssl.so.0.9.8
|   |   +-- libcrypto.so.1.0.0
|   +-- tmp
|   +-- mnt

其中第二级中的所有文件都是目录(bin、usr、lib、mnt、tmp)

我需要将此目录复制到我的目的地。所以,我这样做:

cp -r /path/to/source/rootfs /path/to/destination/

现在,假设我从其他地方将两个新文件复制到此目录结构(在目标中),所以现在看起来像

+-- rootfs
|   +-- bin
|   |   +-- cat
|   |   +-- chmod
|   |   +-- cp
|   |   +-- ls
|   |   +-- echo
|   |   +-- grep
|   |   +-- **mke2fs**
|   |   +-- **e2fsck**
|   +-- usr
|   |   +-- bin
|   |   |   +-- a
|   |   |   +-- b
|   |   |   +-- c
|   +-- lib
|   |   +-- libc.so.6
|   |   +-- libssl.so.0.9.8
|   |   +-- libcrypto.so.1.0.0
|   |   +-- **libm.so.6**
|   |   +-- **librt.so.1**
|   +-- tmp
|   +-- mnt

此时,如果我再次将源目录复制到目标目录,我在目标文件夹中创建的新文件将保持原样。

cp -r /path/to/source/rootfs /path/to/destination

源目录中所有文件的修改时间都已更新为第二个副本的时间,这是有意义的。

bin 目录的修改时间会更新为第二个副本的时间,而 lib 目录的修改时间则不会,我并没有真正得到这一点 - 因为这两个目录都有新文件。

这让我想知道 - linux 复制命令是如何工作的,以及它如何更新文件夹的修改时间?

答案1

更改目录 mtime 的唯一原因cp -r是源目录中的文件在目标目录中丢失。

你可以检查发生了什么

cp -ruv /path/to/source/rootfs/. /path/to/destination

相关内容