zpaqで始めるお手軽バックアップ
バックアップとってますか?
皆さん、バックアップ取ってますか?
日頃のメモや業務日誌などをhowmやmemoで書いていると思います。
これ、何かの事故で消えたりすると被害甚大ですよね。
で、バックアップを取りましょう!
こんな方法もあるよっていう記事です。
zpaqって?
公式サイトはこちらです。
うたい文句は「zpaq is a free and open source incremental, journaling command-line archiver for Windows, Linux and Mac OS/X. 」です。
しかも、大量のテキスト系ファイルの圧縮率が最強[1]です。
普通の使い方
圧縮は下記のように-m
オプションで圧縮率(0-5)を指定して、add
で圧縮ファイル名と対象を指定します。
アーカイバなのでディレクトリとか指定できます。
今回はWindowsでやってみました。
PS C:\tmp\zpaq検証> dir
ディレクトリ: C:\tmp\zpaq検証
Mode LastWriteTime Length Name
d----- 2021/03/18 1:02 参考
PS C:\tmp\zpaq検証> dir .\参考\
ディレクトリ: C:\tmp\zpaq検証\参考
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2021/03/18 1:02 51 1st.txt
-a---- 2021/03/18 1:01 76 2nd.txt
-a---- 2021/03/18 1:01 76 3rd.txt
PS C:\tmp\zpaq検証> zpaq -m4 add test.zpaq .\参考\*txt
zpaq v7.15 journaling archiver, compiled Aug 17 2016
Creating test.zpaq at offset 0 + 0
Adding 0.000203 MB in 3 files -method 46 -threads 2 at 2021-03-21 16:18:38.
+ ./参考/1st.txt 51
+ ./参考/2nd.txt 76
+ ./参考/3rd.txt 76 -> 0
[1..2] 143 -method 46,127,0
3 +added, 0 -removed.
0.000000 + (0.000203 -> 0.000127 -> 0.000959) = 0.000959 MB
0.031 seconds (all OK)
PS C:\tmp\zpaq検証> dir
ディレクトリ: C:\tmp\zpaq検証
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2021/03/18 1:02 参考
-a---- 2021/03/22 1:18 959 test.zpaq
PS C:\tmp\zpaq検証>
中身の確認はlist
です。
PS C:\tmp\zpaq検証> zpaq list .\test.zpaq
zpaq v7.15 journaling archiver, compiled Aug 17 2016
./test.zpaq: 1 versions, 3 files, 2 fragments, 0.000959 MB
- 2021-03-17 16:02:30 51 A ./参考/1st.txt
- 2021-03-17 16:01:19 76 A ./参考/2nd.txt
- 2021-03-17 16:01:19 76 A ./参考/3rd.txt
-> 0.000959 MB compressed.
0.015 seconds (all OK)
展開はextract
で出来ます。
PS C:\tmp\zpaq展開> zpaq extract ..\zpaq検証\test.zpaq
zpaq v7.15 journaling archiver, compiled Aug 17 2016
../zpaq検証/test.zpaq: 1 versions, 3 files, 2 fragments, 0.000959 MB
Extracting 0.000203 MB in 3 files -threads 2
[1..2] -> 143
> ./参考/1st.txt
> ./参考/2nd.txt
> ./参考/3rd.txt
0.016 seconds (all OK)
PS C:\tmp\zpaq展開> dir
ディレクトリ: C:\tmp\zpaq展開
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2021/03/22 1:30 参考
PS C:\tmp\zpaq展開>
zpaqっぽい使い方
普通の使い方は普通のzipとかと大して変わりません。
zpaqがincremental, journaling
であることを発揮するのは、バックアップ対象が更新された場合です。
上記の例でいうと参考/1st.txt
を更新してから再度コマンドを実行してみます。
PS C:\tmp\zpaq検証> dir .\参考\
ディレクトリ: C:\tmp\zpaq検証\参考
Mode LastWriteTime Length Name
-a---- 2021/03/22 1:35 920 1st.txt
-a---- 2021/03/18 1:01 76 2nd.txt
-a---- 2021/03/18 1:01 76 3rd.txt
PS C:\tmp\zpaq検証> zpaq -m4 add test.zpaq .\参考\*txt
zpaq v7.15 journaling archiver, compiled Aug 17 2016
test.zpaq: 1 versions, 3 files, 2 fragments, 0.000959 MB
Updating test.zpaq at offset 959 + 0
Adding 0.000920 MB in 1 files -method 46 -threads 2 at 2021-03-21 16:36:35.
# ./参考/1st.txt 920
[3..3] 932 -method 46,205,0
1 +added, 0 -removed.
0.000959 + (0.000920 -> 0.000920 -> 0.000907) = 0.001866 MB
0.031 seconds (all OK)
PS C:\tmp\zpaq検証>
なんと更新されたファイルだけを圧縮しているではないですか!
中身がどうなっているか確認します。-all
オプションを指定します。
PS C:\tmp\zpaq検証> zpaq -all list .\test.zpaq
zpaq v7.15 journaling archiver, compiled Aug 17 2016
./test.zpaq: 2 versions, 4 files, 3 fragments, 0.001866 MB
- 2021-03-21 16:18:38 203 0001/ +3 -0 -> 959
- 2021-03-17 16:02:30 51 A 0001/./参考/1st.txt
- 2021-03-17 16:01:19 76 A 0001/./参考/2nd.txt
- 2021-03-17 16:01:19 76 A 0001/./参考/3rd.txt
- 2021-03-21 16:36:35 920 0002/ +1 -0 -> 907
- 2021-03-21 16:35:39 920 A 0002/./参考/1st.txt
0.001123 MB of 0.001123 MB (6 files) shown
-> 0.001047 MB (4 refs to 3 of 3 frags) after dedupe
-> 0.001866 MB compressed.
0.031 seconds (all OK)
PS C:\tmp\zpaq検証>
なんと0001とか0002とか勝手について、区別できるんです。
このファイルをそのまま展開すると最新版が展開されます。つまり上記の表現でいうと下記ファイルが展開されます。
- 0001/./参考/2nd.txt
- 0001/./参考/3rd.txt
- 0002/./参考/1st.txt
メモは更新することもあると思います。更新後、やっぱり過去のメモが見たくなった場合zpaqは力を発揮します。
-all
オプションを付けてextract
すればいいんです。
PS C:\tmp\zpaq展開> zpaq -all extract ..\zpaq検証\test.zpaq
zpaq v7.15 journaling archiver, compiled Aug 17 2016
../zpaq検証/test.zpaq: 2 versions, 4 files, 3 fragments, 0.001866 MB
Extracting 0.001123 MB in 4 files -threads 2
[1..2] -> 143
[3..3] -> 932
> 0001/./参考/1st.txt
> 0001/./参考/2nd.txt
> 0001/./参考/3rd.txt
> 0002/./参考/1st.txt
0.015 seconds (all OK)
展開後はこんなツリー構造です。
PS C:\tmp\zpaq展開> tree /a /f
フォルダー パスの一覧: ボリューム Windows
ボリューム シリアル番号は 243D-0FDD です
C:.
+---0001
| \---参考
| 1st.txt
| 2nd.txt
| 3rd.txt
|
\---0002
\---参考
1st.txt
あとは時刻起動でバックアップ
いかがでしたか?
今回はファイルサイズが小さく圧縮率のすごさは全く分からないと思いますが、zpaqの使い方は判ったかと思います。
あとはzpaqファイル自体を本体外へ定期的にバックアップすることを忘れないでください。
なんでこんなこと書いたか
メモを上書きして暫くたってから、あ、上書き前のファイルみたい!と思ったんですが、バックアップのzipは既に上書き後[2]だったんです…。
バックアップを取ってるのに無力!と感じて色々考えたり探したりしました。
で、辿り着いたのがzpaqです。
もちろんバックアップファイルの世代管理とかやりようは、いくらでもありますがzpaqは何も考えずいつも同じバックアップコマンドを実行すればいいというのが手軽でいいです。
Discussion