當我在 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