Я ищу решение для создания файла tar.bz2 и сохранения метки времени исходной папки. Мое решение - "touch -t {исходное время}" file.tar.bz2
manuel@mfpanzuela:~$ ls -la
drwxrwxr-x 2 manuel manuel 4096 nov 13 2013 cmdb
manuel@mfpanzuela:~$ tar cjf cmdb.tar.bz2 cmdb
-rw-rw-r-- 1 manuel manuel 860 may 20 11:28 cmdb.tar.bz2
manuel@mfpanzuela:~$ touch -t 201311130000 cmdb.tar.bz2
manuel@mfpanzuela:~$ ls -la
drwxrwxr-x 2 manuel manuel 4096 nov 13 2013 cmdb
-rw-rw-r-- 1 manuel manuel 860 nov 13 2013 cmdb.tar.bz2
Есть идеи сделать это лучше?
Временная метка вашего архивного файла, конечно же, не совпадает с меткой каталога, поскольку архив технически является чем-то совершенно новым. Но файлы и каталоги внутри архива останутся собственными отметками времени.
Конечно, впоследствии вы можете изменить метку времени, и вам даже не нужно извлекать метку файла из каталога, просто укажите на нее, используя -r
:
touch -r cmdb cmdb.tar.bz2
(AFAIK, -r
возможность touch
соответствует Стандарты POSIX.)
Что вы имеете в виду под словом «лучше?» Если вы хотите написать сценарий, вы можете комбинировать это так:
touch -d @`stat -c "%Y" cmdb` cmdb.tar.bz2
или что-то в этом роде, но если ваш подход работает, ничего страшного.
(man touch
, man stat
).