hdup 16

hdupの使い方

howtoの邦訳. FAQの邦訳

HOWTO

はじめに

この文書はhdupを使っての一般的なバックアップ作業の進め方を説明するため のものです. hdup 1.6.6以上を対象に書かれています.

hdupでバックアップする

hdupはたくさんの機能があります. この文書では一番簡単なバックアップ法を 中心に説明します.

基本的なバックアップ

hdupには3つのバックアップモードがあります:

  1. monthly - レベル0のダンプ - すべてをダンプ
  2. weekly - レベル1のダンプ - 先月(フルダンプ)から更新されたものすべてをダンプ
  3. daily - レベル2のダンプ - 先週(ダンプレベル1)から更新されたものすべてをダンプ

これ以上のレベルはありません. 各レベルはマンスリー, ウィークリー, デイ リーと呼ばれていますが, マンスリーダンプを1日2回行うことも可能です. イ ンクリメンタルバックアップを使うことでメディアの使用領域を抑えることが できます.

設定ファイルについて

次にあげるのは基本的な(おそらく有用な)設定ファイルです. アーカイブディ レクトリは適宜読みかえてください.
[global]
archive dir = /vol/backups
# this is not needed, but I like it too much
date spec = iso

[myhost]
dir = /etc, /home

これにより, hdupによりすべてのバックアップが/vol/backup以下に格納さ れます. またmyhostは/etcと/homeのバックアップがとられる(対象となる)ホ ストです. このHOWTOでは, 今紹介した設定が使用・拡張されます. バックアッ プ(およびレストア)の間, /vol/backups/myhost/LOCKにロックファイルが作ら れます. これにより同一ホストで同時に複数のhdupが実行されることを防ぐこ とができます. hdupが使うインクリメンタルデータは /vol/backups/myhost/etcに格納されます.

マンスリーバックアップ

マンスリーバックアップは hdup -c hdup.conf monthly myhost により実行 できます. これにより, /etc と /home の内容が納められた, gzip+tarなファ イル /vol/backups/myhost/16-02-2003/myhost.16-02-2003.monthly.tar.gz が生成されます.

ウィークリー/デイリーバックアップ

文法はマンスリーとほぼ同じです. ウィークリーは最新のマンスリーバックアッ プからの差分ダンプを作成します:

/vol/backup/myhost/16-02-2003/myhost.16-08-2003.weekly.tar.gz

一方, デイリーでは次のようなファイルが作られます:

/vol/backup/mohost/16-02-2003/myhost.16-02-2003.daily.tar.gz

ネットワークバックアップ

hdupはネットワークバックアップ/レストアを完全にサポートしています. リ モートホストにhdup実行ファイルを置いておけばよいのです. この例では myhostからremotehostへsshを使ってバックアップをしようとしています.

myhostについては上記の設定を使います. remotehostについては多少作業が必 要です.

リモートホスト

hdupをインストールしたら hdup.conf を作成する必要があります.
[global]
archive dir = /vol/backups
# this is not needed, but I like it too much
date spec = iso

[myhost]
allow remote = yes
この "allow remote" 宣言によりhdupがmyhostのリモートバックアップを許可 します. 設定ファイルは /etc/hdup/hdup.conf に置きます (他の場所に置き たいなら "remote hdup option" を参照しましょう)

hdup.confを拡張する

myhostのためにhdup.confを拡張しましょう.

以下のように設定してみます:

[global]
archive dir = /vol/backups

[myhost]
dir = /home, /etc
# this default to /usr/bin/ssh - so it is not really needed
proto = /usr/bin/ssh
# we want to be able to login without typing a passwd
proto option = -i /home/user/.ssh/id_dsa.pub
# these are also the defaults, but we add them anyway
remote hdup = /usr/local/sbin/hdup
remote hdup option = -c /etc/hdup/hdup.conf
パスワードを訊かれることなくmyhostからリモートホストへ接続できることを 確認しておきましょう. 設定方法はFAQにもあります.

バックアップをとる

以下のコマンドによりネットワークバックアップを作成することができます:

hdup -c hdup.conf monthly myhost @user@remotehostIf

うまくいったらマンスリーバックアップが以下の場所に作成されます:

/vol/backups/myhost/2003-03-16/myhost.16-02-2003.monthly.tar.gz

同様にウィークリー・デイリーバックアップも実行できます. myhostのホスト 引数は双方で一致する必要があります. リモートのhdupがこれをチェックしま す. ホスト名が一致し "allow remote = yes" が設定されていれば, バックアッ プはリモートホストから削除されます.

暗号化されたバックアップ

リモートバックアップを実行する際, あなたはアーカイブをアップロードする マシンの管理者を信用するか, さもなければアーカイブを暗号化することにな るでしょう. 暗号化してしまえば誰にも読むことができません -- ただし暗号 化キーを忘れればあなた自身にも読むことができなくなりますが...

設定ファイルについて

まず暗号方法とキーを設定する必要があります:
mcrypt --list
これで対応しているアルゴリズムの一覧が表示されます:
...
rijndael-192 (32): cbc cfb ctr ecb ncfb nofb ofb
saferplus (32): cbc cfb ctr ecb ncfb nofb ofb
saferplus (32): cbc cfb ctr ecb ncfb nofb ofb
wake (32): stream
wake (32): stream
...
各行の最初の語だけが重要です. 例えばrijdael-192を選んだとしましょう (NSAが推奨する方式ですが, あなたは使いたいとは思わないかもしれません...) 次にアーカイブを暗号化する際に使う鍵をファイルにしておく必要があります:
cat > my_secret_key
this is a very secret key
^D
さらにhdupにこれを使うように指示しなくてはなりません. 暗号化するホスト すべてのhost文に以下の行を追加します:
[myhost]
algorithm = rijndael-192
key = /path/to/my/key/my_secret_key
これで全てです. hdupはアーカイブの暗号化にmcryptを使います.

Note 1 :: Be aware that encryption is a local operation. Encrypted remote archives are generated locally and then transmitted to the remote host. A restore works in a opposite manner: it is directly transmitted to the client machine which has to decrypt it while restoring. The rational behind this is that you don't want people on the remote machine to be able to look into your archive. A drawback is that you will have to store your secret key somewhere safe (ie not on the machine that you are backupping).

Note 2 :: hdupは/usr/bin以下にmcryptがあるとして動作しています. これはバージョン 1.6.9では設定できるようなります.

バックアップからのレストア

OK, disaster struck. You'll need to restore some data from you're archives. Luckily this is not to difficult with hdup. If you lost everything you have to rebuild your hdup.conf -- hdup does not work without one. An example of the smallest possible hdup.conf is given above. Note that when restoring the dir = section under myhost is not relevant. Also note that when restoring up to three archives are needed: the last monthly, weekly and daily.

ローカルレストア

This assumes the archives are stored locally. Suppose your harddisk crash happened on 20 Mar 2003, so you the last archive is from 19 Mar 2003. hdup -c hdup.conf restore myhost 2003-03-19 /tmpwill restore everything to tmp. You can then copy /home from that dir to /home of your new system. Alternatively you can specify force = yes in the hdup.conf and restore to /.

リモートレストア

You were smart enough to upload you (encrypted?) archives to somebody else's system and now you want them back. Remote backups can not be pulled from a remote location, they must be pushed. So on myhost setup your hdup.conf to allow a remote archives to be received:
[myhost]
allow remote = yes
On remotehost you'll have specify the remote hdup's location and possible the options to use (see above for doing that with remote backups). If you have done that you can login in remotehost and issue the following:
hdup -c hdup.conf restore myhost 2003-03-19 /tmp @user@myhost
This will look for the archives to restore and passes them to myhost. If you did not setup an automatic login with ssh, you will be prompted (maximum of three times) for your password for myhost. After this command the restored files should be placed in /tmp/a on myhost.

中心的バックアップサーバ

Let one machine act as a central repository for the backup and initiate the backup on the remote machines.
ssh remotehost /mnt/key/hdup16/src/hdup -c \
/mnt/key/hdup16/hdup.conf monthly \
elektron @miekg@centralhost 
Which does the following: login on the remote host and start a remote backup which will place the archive on the central host.

this will be extended with an example configuration setup