使用 -FS 选项“刷新”zip 文件是否会更改文件的修改时间?

使用 -FS 选项“刷新”zip 文件是否会更改文件的修改时间?

我有一个 zip 文件,用作我的工作备份。-FS每当我想更新备份文件时,我都会使用“刷新”选项 ( )。但是,该文件将上次修改的日期显示为我最初创建该文件的日期,而不是自我“刷新”该文件以来的多次修改日期。这是正常行为吗?

答案1

Unix 没有创建日期,因此当您更新这些文件时,.zip您是根据其修改日期来更新它们,根据zip手册页,这是正常行为。

摘抄

The new File Sync option (-FS) is also considered a new mode, though it 
is similar to update.  This mode synchronizes the archive with the files on 
the OS, only replacing files in the archive if the file time or size of the 
OS file is different, adding new files, and deleting entries from the 
archive where there is no matching file.  As this mode can delete entries 
from  the  archive,  consider making a backup copy of the archive.

例子

假设我们有以下 3 个文件:

$ touch file1 file2 file3

我们将它们添加到 ZIP 文件中。

$ zip file.zip file{1..3}
  adding: file1 (stored 0%)
  adding: file2 (stored 0%)
  adding: file3 (stored 0%)

一段时间过去并file3更新。

$ touch file3

现在我们更新 ZIP 文件。

$ zip -FS file.zip file{1..3}
updating: file3 (stored 0%)

检查 ZIP 文件,我们看到文件的时间现在如下所示:

$ unzip -l file.zip 
Archive:  file.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  07-12-2014 02:59   file1
        0  07-12-2014 02:59   file2
        0  07-12-2014 03:00   file3
---------                     -------
        0                     3 files

如果我们创建一个临时目录并在其中解压 ZIP 文件:

$ mkdir temp; cd temp

$ unzip ../file.zip 
Archive:  ../file.zip
 extracting: file1                   
 extracting: file2                   
 extracting: file3                   

该目录的内容如下:

$ ls -l
total 0
-rw-rw-r--. 1 saml saml 0 Jul 12 02:59 file1
-rw-rw-r--. 1 saml saml 0 Jul 12 02:59 file2
-rw-rw-r--. 1 saml saml 0 Jul 12 03:00 file3

如果我们使用stat命令来查看file3

$ stat file3
  File: ‘file3’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fd02h/64770d    Inode: 17307675    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    saml)   Gid: ( 1000/    saml)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2014-07-12 03:00:16.000000000 -0400
Modify: 2014-07-12 03:00:16.000000000 -0400
Change: 2014-07-12 03:01:03.447913554 -0400
 Birth: -

笔记:请注意,访问、修改和更改都有时间戳。该zip命令保留您使用-FS开关时的访问和修改时间。

参考

相关内容