ホーム > タグ > DAR
DAR
rsyncでディスク容量を節約しながら擬似的にフルバックアップをとる
基本的にバックアップはDARで取っていますが、とあるサーバーで、個々のファイルサイズは小さいが、ディレクトリ・ファイル数がかなり多く、全体の容量もかなりあるものをDARで圧縮すると、ファイルサイズが倍以上に増えてしまう・時間が異常に掛かるので、cronでファイルをフェッチするまでにアーカイブが終わらないという問題が。
仕方ないのでrsyncでそのまま転送することにしましたが、さすがに毎回すべてを転送していては容量の無駄。そこで、実際は更新されたファイルだけ転送し、変更のないファイルはハードリンクにすることで、擬似フルバックアップをとることに。
まず初回は普通にrsyncで対象データをすべて転送、2度目以降は以下のコマンドを実行。
# rsync -az –delete –link-dest=../fullbackupdir root@192.168.x.x:/datadir /path/to/incrementalbackupdir
-a ファイル情報を保持
-z データを圧縮して転送
–delete 削除されているファイルを転送先でも削除する
–link-dest 変更のないファイルは指定ディレクトリ内データのハードリンクに置き換える
古いrsyncでは–link-destオプションがなかったので、代わりにcp -alでハードリンクを作成後に同期を行う方法がとられていたようですが、このオプションができたおかげで1コマンドで処理できるようになったとのこと。
注意事項としては、–link-destで指定するフルバックアップのパスは、新規転送先ディレクトリからの相対パスでなければいけないらしい(フルパスがダメかどうか自信なし)。また、/があるとディレクトリ以下のファイルすべてを転送しますが、/なしの場合はディレクトリごと転送するという違いがあるので、指定する際には気をつける必要があります。
転送終了後、新規差分ディレクトリ内の変更のないファイルがあるディレクトリでls -liを実行してiノード数が増えていたら、ちゃんとハードリンクになっています。同じファイルなのにiノードの指しているブロックが異なっていた
ら、更新されたファイルか、そうでなければパス指定が間違っていると思われますので確認を。
※尚、当然ながらディレクトリはハードリンクされません。
- Comments: 0
- Trackbacks: 0
DARのよくあるインストール時エラーと対処法
tarとDARでも紹介した、なかなか高速で多機能なアーカイバのDAR(Disk ARchive)ですが、仕事で大量のサーバー機にインストールしていたら、ふたつほどよくあるconfigureとコンパイルエラーがあったので紹介しておきたいと思います。
先にインストール方法をざっと。DAR公式サイトから最新版がダウンロードできます。んで
# ./configure
して、展開したディレクトリに入ってスーパーユーザーで
# make
# make install-strip
するだけです。これでインストールは完了。darと入力してEnterを押し、英語で「引数が足りません」的なことが表示されたらOKです。
よくあるエラー。まず、RHEL系ではconfigure時に
“g++: /lib/libattr.a: No such file or directory”
というエラーを吐くことがあります(参考)。これは
# ln -s /usr/lib/libattr.a /lib/libattr.a
として、DARが指定するディレクトリにシンボリックリンクをはってやればOKです。
もうひとつはインストール後に気づくことが多いので多少厄介ですが(DARは速いけど、DAR自体のコンパイルは割と掛かるので…)、インストール後にdarを実行したときに、引数リストではなく
dar: error while loading shared libraries: libdar.so.4: cannot open shared object file: No such file or directory.
と表示されることがあります。これもupdatedb→locateとかやってみると、ファイル自体は存在してるので、あるいはln -sで解決するのかも知れませんが、とりあえず
# make distclean
して、以下のオプションをつけてconfigureしなおすと問題なく動くようです。
# ./configure –disable-shared
こちらのエラーは英語の資料漁ってどっか(ソース紛失)で見つけたので、一応エラー集としておいときます。日本語の資料がまだまだ少ないようなので、参考までに。
参考:
◆DARで賢くバックアップ
◆DARでシステムのバックアップ
- Comments: 0
- Trackbacks: 0
tarとDAR
tarはgzipと一緒にtar.gzなんていう名前でよく配布されているので、Linuxを普段使うような人はまず見たことがあるかと思います。簡単なバックアップにも使われたりしていますが、書庫が壊れた場合に中身を取り出せないらしいんですよね、経験したことはまだないですけど。
んなワケでより堅牢なバックアップ方法を探していましたが、そのひとつがBacula、もうひとつがDAR。Baculaはオープンソースのバックアップソリューション、DARはDisk Archiveの略だそうで、tar+gzipより高速かつ差分バックアップもとれるなど、簡単なバックアップならこなせてしまいます。
当初はBaculaを利用しようと思っていたのですが、500台くらいまで管理できるという高性能ソリューションで割と設定項目なども多く、ぺーぺーの自分には動くけど細かい使い方がイマイチ。とりあえず現在tarで行っているバックアップの置き換えということで、DARを導入することにしました。
DARは若干コマンドが長いですが、バックアップはスクリプトに組み込んじゃうのであんまり関係ありません。むしろ圧縮の有無や差分・増分バックアップ、処理速度、元々圧縮されているファイルを圧縮対象から外すなど、詳細な指定が可能となっています。また、長くなりがちなコマンドも/etc/darrcやホームディレクトリの.darrcに記述してしまうことができるので、一度バックアップポリシーを設定してしまえば後はラクです。
とりあえずはPerlで(bash苦手w)バックアップスクリプトを作成。引数で完全・差分を選択できるようにし、cronで実行間隔と引数をそれぞれ指定。まだ一部気になる部分が残っているので実装はできてませんが…。
簡単にインストールできるので、自宅サーバーを運営されている程度であれば、DARを使ってみるのもいいかも知れません。
- Comments: 0
- Trackbacks: 2
Home > Tags > DAR
