방금 임의의 source.tar.gz(오늘 31-jan-2019
)를 다운로드하고 추출했습니다. stat
생성된 폴더를 작업 하면 다음이 표시됩니다.
Access: 2019-01-31 10:37:26.308991485 +0100
Modify: 2018-11-18 00:02:35.000000000 +0100
Change: 2019-01-31 10:36:03.881185889 +0100
Birth: -
수정 날짜가 노트북을 소유하기 전인 과거였습니다. 누군가 이 타임스탬프가 어떤 용도로 사용되는지 설명해 줄 수 있나요?
이는 매우 비직관적이며 모든 시간(변경/액세스/수정)이 내 파일 시스템 수명으로 제한되기를 원합니다. (또한 가장 유용한 날짜 중 하나, 즉 특정 파일/폴더가 처음 나타난 날짜는 존재하지 않지만 예, 통과할 수 있다는 것을 알고 있습니다.ext4의 생성이 비어 있습니다.)
답변1
내 대답은 GNU를 기반으로 합니다 tar
.매뉴얼은 여기에서 확인하실 수 있습니다.
tar
아카이브를 생성할 때 파일의 수정 시간을 보존합니다. 이를 통해 tar
파일의 타임스탬프에 따라 특정 작업을 수행할 수 있습니다.
- 첫 번째 용도는 "업데이트" 작업입니다.
-u
,--update
아카이브의 해당 복사본보다 최신 파일을 추가합니다.
매뉴얼에서:
이
--update
작업은 지정된 아카이브 멤버의 날짜를 동일한 이름을 가진 파일의 날짜와 비교하여 tar 아카이브를 업데이트합니다. 파일의 수정 시간이 아카이브 멤버보다 최신인 경우 파일의 최신 버전이 아카이브에 추가됩니다( 에서와 같이--append
).
업데이트 작업으로 인해 실제로 파일을 덮어쓰는 것이 아니라 추가하게 됩니다. 이는 역사적 이유, 즉 테이프의 중간 부분에 쓰기가 어려웠기 때문입니다.
- 두 번째 용도는 디스크에 이미 존재하는 파일 아카이브를 추출하는 것입니다. 기존 파일이 최신 파일인 경우
tar
다음 옵션을 사용하여 유지하도록 요청할 수 있습니다--keep-newer-files
.
--최신 파일 유지
보관된 복사본보다 최신인 기존 파일을 바꾸지 마십시오.
tar
아카이브는 원래 자기 테이프에 파일을 편리하게 저장하는 데 사용되었습니다. 장기 저장 관점에서tar
아카이브는 특정 시점의 파일 세트 상태를 나타낼 수 있습니다. 논리적으로 여기에는 보관된 콘텐츠의 타임스탬프가 포함되어야 합니다. 수정 타임스탬프는 atime(파일을 읽으면 변경됨) 또는 ctime(tar가 파일에서 추출된 메타데이터를 "복구"할 때 변경될 수 있음)이 아닌 파일 내용이 수정된 시기를 신뢰할 수 있는 척도입니다.수정 시간이 아카이브 내부에 존재하므로
-d
/ 옵션을 사용하여--diff
해당 정보를 기존 파일 시스템의 파일과 비교할 수도 있습니다.
( ) 또는 작업은 지정된 아카이브 멤버를 동일한 이름의 파일과 비교한 다음 파일 크기, 모드, 소유자, 수정 날짜 및 내용의 차이를 보고합니다
--compare
.-d
--diff
마지막으로, 아카이브를 추출할 때 수정 타임스탬프를 무시해야 하는 경우 -m
/ --touch
옵션을 사용하면 됩니다.
-m
,--touch
데이터 수정 시간은 추출되지 않습니다. 이 옵션을 사용하면 tar는 추출한 파일의 데이터 수정 시간을 아카이브에 기록된 시간으로 설정하는 대신 파일이 추출된 시간으로 유지합니다.
답변2
GNU를 사용하면 tar
아카이브의 내용을 추출하고 수정 시간을 다음과 같이 설정할 수 있습니다.현재 날짜/시간.
tar --touch -xvf source.tar.gz
이를 통해 당신이 원하는 것을 달성할 수 있을 것입니다.
기본 동작은 기본 동작입니다. 나는 mtime
파일이 어느 서버에서 왔는지, 또는 포함된 파일 시스템이 어디에서 생성되었는지에 관계없이 항상 파일을 마지막으로 업데이트된 인스턴스로 설정하기를 원합니다. 이 유틸리티는 rsync
서버와 파일 시스템 간의 타임스탬프를 비교하는 기능에 부분적으로 의존합니다.