대상 디렉토리와 구조가 동일한 소스 디렉토리를 복사할 때 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

관련 정보