web-dev-qa-db-ja.com

-FSオプションを使用してZipファイルを「更新」すると、ファイルの変更時間が変更されますか?

仕事のバックアップとして使用するZipファイルがあります。 「更新」オプションを使用します(-FS)バックアップファイルを更新したいときはいつでも。ただし、ファイルには、最後に変更された日付が、ファイルを「更新」してから数回ではなく、最初にファイルを作成した日付として表示されます。これは正常な動作ですか?

2
NeutronStar

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スイッチを使用するときのアクセス時間と変更時間を保持します。

参考文献

3
slm