zip, diff, patch

1. zip

Windows標準のzipコマンドでは暗号化出来ない。そこで、Linuxのzipコマンドの出番だ。

$ zip -e filename

"-e" オプションで暗号化することができる。

2. diff と patch

3. 応用:Microsoft Office ファイルにdiffとpatch

Microsoft Office のファイル(.docx など)は複数のテキストファイル(xml)をzipで圧縮しているので、diff & patch 可能である。diff & patch を使うことで、ちょっとした変更なら数メガバイトもの大きなサイズのオフィスファイルを毎回やりとりせずに、差分だけ送ることでメールボックス等の容量を無駄にせず、通信コストも削減することができる。また、変更箇所の有無も確認することができる。

まず、あるディレクトリにオフィスファイル org.docxとnew.docxがあるとする。

$ mkdir org;cd org;unzip ../org.docx # docx を展開

$ cd ..

$ mkdir new;cd new;unzip ../new.docx # docx を展開

$ cd ..

$ diff -ruN org new > diff.patch # 差分作成

出来たtest.patchが差分である。次に、元ファイルと差分ファイルから新しいファイルを作成する。

$ patch -s -p0 < diff.patch # パッチを当てる

$ cd org;zip -r ../new.docx * # docx 作成

パッチを当てることでorgディレクトリの元ファイルは新しいファイルになる。orgディレクトリのファイルをzipでまとめれば、オフィスファイルの出来上がり。