ターゲットディレクトリと同じ構造のソースディレクトリをコピーする場合、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

2番目のレベルのすべてのファイルはディレクトリ(bin、usr、lib、mnt、tmp)です。

このディレクトリをターゲットにコピーする必要があります。だから私はこうします:

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

それでは、2つの新しいファイルを別の場所からこのディレクトリ構造(ターゲット)にコピーしたとしましょう。これで、次のようになります。

+-- 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

ソースディレクトリ内のすべてのファイルの変更時間が2番目のコピー時間に更新されました。

binディレクトリの修正時間は2番目のコピーの時間で更新されますが、libディレクトリの修正時間は更新されません。どちらのディレクトリにも新しいファイルがあるからです。

これは私を気にする。 Linuxのコピーコマンドはどのように機能し、フォルダの変更時間をどのように更新しますか?

ベストアンサー1

mtimeディレクトリを変更する唯一の理由cp -rは、ソースディレクトリのファイルがターゲットディレクトリにない場合です。

何が起こっているのか確認できます

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

おすすめ記事