data e hora XXXX s na edição futura - comando touch (Linux)

5

Quando eu descompactei um arquivo tar.gz no Debian Lenny, obtive as seguintes saídas:

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

Vejo que o registro de data e hora do arquivo está no futuro, comparando o horário do sistema. Eu uso touch como abaixo para alterar a data e hora do arquivo, e stat mostra que a data e hora do arquivo é a hora atual do sistema, então eu tento descompactar o arquivo, mas ainda recebo o mesmo registro de data e hora problema (como acima).

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

Sei que posso resolver o problema alterando a hora do sistema em date -s "08 JUN 2013 00:19:00" ou use NTP . Mas eu me pergunto, por que mudar a data e hora do arquivo por touch não funcionou? Como eu deveria ter mudado o registro de data e hora do arquivo, para que eu não tivesse esse aviso?

Se você quiser ver o sistema de arquivos:

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
    
por Angs 08.06.2013 / 22:08

2 respostas

4

Ele não funcionou porque você alterou o registro de data e hora do arquivo , não dos arquivos que ele contém. Se você executar stat no arquivo tar.gz , descobrirá que a hora foi alterada corretamente. touch não pode acessar os arquivos armazenados no arquivo até que você os tenha extraído, para que eles não tenham sido alterados.

Em qualquer caso, isso não deve ser um problema, apenas descompacte o arquivo morto e altere o registro de data e hora dos arquivos:

mkdir foo
mv openssl-1.0.1e.tar.gz foo/
cd foo/
tar xvvzf openssl-1.0.1e.tar.gz
find . -exec touch -am '{}' \;
    
por 08.06.2013 / 22:13
5

Você pode extrair seu arquivo tar com o parâmetro --touch para fazer isso automaticamente.

tar --touch -xvf openssl-1.0.1e.tar.gz
    
por 04.06.2015 / 00:18