Files

使用 -FS 選項“刷新” zip 文件是否會更改文件的修改時間?

  • July 12, 2014

我有一個 zip 文件,用作工作的備份。-FS每當我想更新我的備份文件時,我都會使用“刷新”選項 ( )。但是,該文件將上次修改的日期顯示為我最初創建文件的日期,而不是自從我“更新”文件以來的幾次中的任何一次。這是正常行為嗎?

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交換機時保留訪問和修改時間。

參考

引用自:https://unix.stackexchange.com/questions/144072