バックアップが面倒だなと思った。実際にバックアップなんてあまり真面目にやってない。
無駄に容量食ってない? という疑念が頭を離れないのでやる気がしないのですね。
じゃあ、変更しそうなファイルだけを人間が選択してバックアップ?
それはなんか違う。
dump/restoreの差分の扱いもなんか違うように思う。ワタシは再現するのに必要なファイルだけをバックアップしたい。
rpmのデータベースを見て、変更・追加されたファイルだけをtarにまとめておけばいいじゃん。というわけで少し手を動かして書いてみた。
Usage: deltadump.py [options]
deltadump.py: backup([file for file in allfiles if not in rpm_db])
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-f FILENAME, --file=FILENAME
output tar filename(MUST SET)
-d DIRNAME, --dir=DIRNAME
backup directory(MUST SET)
-X, --cross-filesystem
cross filesystem
-t, --skip-timestamp skip timestamp
-s, --skip-socket skip socket/pipe
--hash compare hash value
--ignore=IGNORE ignore dir("," separated)
-D, --skip-new-directory
skip new directory
ハッシュ値(SHA-256)の比較は時間がかかるので、デフォルトではサイズしか見ていません。ファイルサイズもハッシュ値もprelinkが邪魔なんですが、prelink -uして元に戻したファイルを比較してます。prelinkは遅いしnekovmなど誤検出してしまうものがあるため、設定ファイルのブラックリストを解析しつつゴニョゴニョと汚くやっているのは皆様の参考になるかどうか…。