如何保留zip压缩后原始文件的时间戳

时间:2017-09-25 05:42:43

标签: linux bash shell zip compression

我的服务器上有很多文件,我们使用过滤器进行压缩,只有x天以前的文件才会被压缩。

zip命令压缩原始文件,生成filename.zip并删除原文。 这有一个小问题,即压缩作业在x天之后运行,时间戳会发生变化。

因此,当我们运行文件以删除旧文件(现在是zip文件)时,由于时间戳已从原始文件更改为压缩文件,因此不会删除所有文件。

我想添加一个条件,在压缩时,我希望zip存档保留文件的原始时间戳,即使它在以后运行。

这样做的一种方法是 - 使用日期命令获取每个原始文件的时间戳 - 压缩原件,取出原件 - 使用"触摸"

,使用并将先前存储的时间戳插入新的zip文件

但是,如果有人能提出更简单的解决方案,那就太棒了。

感谢。

1 个答案:

答案 0 :(得分:0)

我有一些旧文件:

$ ls -l foo
-rw-r--r-- 1 james james 120 Sep  5 07:28 foo

Zip和redate:

$ zip foo.zip foo && touch -d "$(date -R -r foo)" foo.zip

检查出来:

$ ls -l foo.zip
-rw-r--r-- 1 james james 120 Sep  5 07:28 foo.zip

删除原文:

$ rm -i foo