Wenn ich eine Datei unter Debian Lenny entpacke tar.gz
, erhalte ich folgende Ausgaben:
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
Ich sehe, dass der Zeitstempel der Datei in der Zukunft liegt, wenn ich ihn mit der Systemzeit vergleiche. Ich verwende touch
Folgendes, um den Zeitstempel der Datei zu ändern, und stat
es zeigt sich, dass der Zeitstempel der Datei die aktuelle Systemzeit ist. Dann versuche ich, die Datei zu entpacken, aber ich habe immer noch dasselbe Zeitstempelproblem (wie oben).
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
Ich weiß, dass ich das Problem lösen kann, indem ich die Systemzeit ändere date -s "08 JUN 2013 00:19:00"
oder verwende NTP
. Aber ich frage mich, warum das Ändern des Zeitstempels der Datei touch
nicht funktioniert hat. Wie hätte ich den Zeitstempel der Datei ändern sollen, damit ich diese Warnung nicht bekomme?
Wenn Sie das Dateisystem sehen möchten:
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
Antwort1
Es hat nicht funktioniert, weil Sie den Zeitstempel derArchiv, nicht der darin enthaltenen Dateien. Wenn Sie stat
die tar.gz
Datei ausführen, werden Sie feststellen, dass die Zeit korrekt geändert wurde. touch
Sie können nicht auf die im Archiv gespeicherten Dateien zugreifen, bis Sie sie extrahieren, sodass sie unverändert blieben.
Dies sollte in jedem Fall kein Problem darstellen. Entpacken Sie einfach das Archiv und ändern Sie dann den Zeitstempel der Dateien:
mkdir foo
mv openssl-1.0.1e.tar.gz foo/
cd foo/
tar xvvzf openssl-1.0.1e.tar.gz
find . -exec touch -am '{}' \;
Antwort2
Sie können Ihre Tar-Datei mit dem Parameter --touch extrahieren, um dies automatisch zu erledigen.
tar --touch -xvf openssl-1.0.1e.tar.gz