home_backupコマンド Ver. 0.0…3

以前、「home_backupコマンド」でrsyncを使ったバックアッププログラム(シェル・スクリプト)を書いた。このコマンド自身は特に問題なく使っていたのだが、先日、PXEによるディスクレス・クライアント(総集編)の「クライアント用のファイルシステムの作成」で調べた通り、rsyncではSELinuxのコンテキストまで正確にコピーされないことが分かった。実際、バックアップされたファイルのコンテキストを調べると、確かに元のファイルと異なるものがあった。

コンテキストまで正確にコピーするにはcpコマンドやstarを使う方法もあるらしい。(第2回 SELinuxでいろいろバックアップ/リストアしてみた)しかし、cpコマンドは増分バックアップは出来ないし、元々バックアップ向きではない。starは増分バックアップの機能まで持っているみたいだが、Linux標準のコマンドではないので、運用系で使うコマンドは"出来る限り標準実装のもの"というこだわりに合わない。となると、dump & restoreということになるが、増分バックアップで出来るものの同期までは出来ない。*1(一つのコマンドで同期までできて、標準実装のコマンドはrsyncしか知らない。)

そこで、dump & restore と rsync を組み合わせて同期バックアップを取るスクリプトを組んだ。

スクリプトを載せる前に、何故このようなことをしているのか、という環境の説明をしておく。

*1:増分バックアップとは、前回バックアップからの差分だけをバックアップするため、バックアップの時間は短縮できる。しかし、その期間に消されたファイルもバックアップメディアには残るので、このメディアから復元した場合、消されたファイルも復元される。同期バックアップは消されたファイルはバックアップ・メディアからも削除する。