다음과 같은 디렉터리 구조를 가진 소스 디렉터리가 있다고 가정해 보겠습니다.
+-- 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