향후 발행될 타임스탬프 XXXX s - 터치 명령(Linux)

향후 발행될 타임스탬프 XXXX s - 터치 명령(Linux)

Debian Lenny에서 파일의 압축을 풀면 tar.gz다음과 같은 결과가 나옵니다:

tar: openssl-1.0.1e/apps/openssl.cnf: time stamp 2013-02-11 15:26:04 is 1360584537.139999998 s in the future
openssl-1.0.1e/apps/openssl-vms.cnf
tar: openssl-1.0.1e/apps/openssl-vms.cnf: time stamp 2013-02-11 15:26:04 is 1360584537.129999998 s in the future
openssl-1.0.1e/apps/passwd.c

시스템 시간을 비교하면 파일의 타임스탬프가 미래인 것을 알 수 있습니다. touch아래와 같이 파일의 타임스탬프를 변경하고 파일 stat의 타임스탬프가 시스템의 현재 시간임을 확인한 다음 파일 압축을 풀려고 시도했지만 여전히 동일한 타임스탬프 문제가 발생합니다(위와 같이).

ts7500:/home# touch -am openssl-1.0.1e.tar.gz 
ts7500:/home# stat openssl-1.0.1e.tar.gz 
  File: `openssl-1.0.1e.tar.gz'
  Size: 4459777         Blocks: 8736       IO Block: 4096   regular file
Device: 2b09h/11017d    Inode: 40802       Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 1970-01-01 03:15:24.000000000 +0000
Modify: 1970-01-01 03:15:24.000000000 +0000
Change: 1970-01-01 03:15:24.000000000 +0000
ts7500:/home# date
Thu Jan  1 03:15:48 UTC 1970
ts7500:/home# tar xvf openssl-1.0.1e.tar.gz

date -s "08 JUN 2013 00:19:00"또는 를 사용하여 시스템 시간을 변경하면 문제를 해결할 수 있다는 것을 알고 있습니다 NTP. 그런데 왜 파일의 타임스탬프를 변경해도 touch작동하지 않는지 궁금합니다. 해당 경고가 표시되지 않도록 파일의 타임스탬프를 어떻게 변경해야 합니까?

파일 시스템을 보려면 다음을 수행하십시오.

ts7500:/home# blkid
/dev/nbd6: SEC_TYPE="msdos" UUID="01E8-4C7D" TYPE="vfat" 
/dev/nbd8: UUID="236b63b3-15db-40c3-bc5f-e4b7c4b10751" TYPE="ext2" 
/dev/nbd9: UUID="5b13aa84-e589-41a7-84cf-2d0d6bf2a9cd" TYPE="ext3" 
ts7500:/home# df -Th
Filesystem    Type    Size  Used Avail Use% Mounted on
tmpfs        tmpfs     31M  4.0K   31M   1% /lib/init/rw
udev         tmpfs     10M  160K  9.9M   2% /dev
tmpfs        tmpfs     31M     0   31M   0% /dev/shm
rootfs      rootfs    3.3G  1.7G  1.5G  53% /
/dev/root     ext2    2.0M  1.7M  311K  85% /initrd

답변1

타임스탬프를 변경했기 때문에 작동하지 않았습니다.보관소, 포함된 파일이 아닙니다. stat파일을 실행하면 tar.gz시간이 올바르게 변경된 것을 확인할 수 있습니다. touch아카이브에 저장된 파일은 압축을 풀고 변경되지 않은 채로 남아 있을 때까지 아카이브에 저장된 파일에 액세스할 수 없습니다.

어떤 경우에도 이는 문제가 되지 않습니다. 아카이브의 압축을 풀고 파일의 타임스탬프를 변경하면 됩니다.

mkdir foo
mv openssl-1.0.1e.tar.gz foo/
cd foo/
tar xvvzf openssl-1.0.1e.tar.gz
find . -exec touch -am '{}' \;

답변2

--touch 매개변수를 사용하여 tar 파일을 추출하여 이 작업을 자동으로 수행할 수 있습니다.

tar --touch -xvf openssl-1.0.1e.tar.gz

관련 정보