
次のようなディレクトリ構造を持つソースディレクトリがあるとします。
+-- 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