##########################################################
#                       hdup FAQ                         #
##########################################################
Questions:
  1. hdupとは何ですか?
  2. hdupを使うために必要なものは何ですか?
  3. hdupをどのようにインストールすればよいのですか?
  4. 最新バージョンはどこで入手できますか?
  5. 昔の安定バージョンはどこにありますか?
  6. hdupはどのように使えばよいのですか?
  7. アーカイブからレストアするにはどうすればよいのですか?
  8. 一つのファイルだけをレストアするにはどうすればよいのですか?
  9. hdupで@remotehostシンタクスを使うとOpenSSHにパスワードを訊かれます.
  10. アクセスを制限できますか?
  11. 特定のファイルだけをバックアップするにはどうすればよいのですか?
  12. リモートバックアップはどのように動作しますか?
  13. リモートレストアはどのように動作しますか?
  14. 前/後処理はどのように指定すればよいのですか?
  15. アーカイブからレストアするとき変な数のディレクトリが出てきます.
  16. hdupはアーカイブをCDサイズのチャンクに分割できますか?
  17. hdupの暗号化機能はどう使えばよいのでしょうか?
  18. 中心バックアップホストとは何ですか?
  19. 古いアーカイブを削除するよい方法はありますか?
  20. バックアップ作成は成功し, レストアは失敗します. 何故ですか?
  21. ファイルリダイレクションがうまくいきません.
  22. 分割されたアーカイブの内容を表示するにはどうすればよいのですか?
  23. hdupの実行ファイルはどこにインストールされますか?
  24. tarが変なメッセージを表示して失敗します.
  25. インクリメンタルバックアップが完全バックアップと同じくらい大きくなります(SaMBa使用).
  26. 現在知られているバグはありますか?
  27. rpmをビルドするにはどうすればよいですか?


Q1: hdupとは何ですか?
A: hdupは簡単なバックアップユーティリティで, あなたの指定した場所 に望むものを何でもバックアップします. 以下のようなことができます:

Q2: hdupを使うために必要なものは何ですか?
A: 必要となるものは以下の通りです: さらにバックアップするデータ, そしてバックアップするメディアが必要 となります. hdupはデバイスに直接書きこむことができません. マウント されたメディアのみ有効です.

hdupは以下の環境で(警告なしで)コンパイルでき, 利用できます:



Q3: hdupをどのようにインストールすればよいのですか?
A: ./configure && make install によりhdupは/usr/local/binにインストールされます.

設定ファイルはデフォルトではインストールされません. hdup.confを /etc/hdup/hdup.confにコピーし, 環境にあわせて設定を直す必要がありま す.

ディレクトリexample/に設定例があります.



Q4: 最新バージョンはどこで入手できますか?
A: hdupの開発バージョンはCVSから取り出せます. 以下のコマンドでアク セスできます:
$ cvs -z3 -d:pserver:anonymous@elektron.atoom.net:/var/cvs co hdup16

これにより'hdup16'ディレクトリが作成され, その中に最新版のファイル が格納されます. このディレクトリで'make'を実行することで最新のバイ ナリが作成されます. 1.6.8以降, すべてのリリースにはタグがつけられて います. 1.6.8はhdup_1_6_8, .9はhdup_1_6_9のように命名されています.

最新の安定版はwww.miek.nl/projects/hdup/hdup.htmlにあります.



Q5: 昔の安定バージョンはどこにありますか?
A: 古いリリースはwww.miek.nl/projects/hdup/previousにあります.

Q6: hdupはどのように使えばよいのですか?
A: 完全バックアップを作成するには'hdup monthly 'を使いま す. 最初のインクリメンタルバックアップは'hdup weekly 'で作 成され, 2番目のインクリメンタルバックアップは'hdup daily ' で作成されます. たとえば, cronファイルに, マンスリーは1日に, ウィー クリーは1, 7, 14, 21, 28日に, そしてデイリーは毎日実行するように設定 しましょう. このcronファイルは1日に必ず実行されるようにしましょう. まずマンスリーを, 次にウィークリーを, そして最後にデイリーを実行する よう, 順番に注意しましょう.

まとめ:
完全バックアップ - hdup monthly hostname
第1レベルダンプ - hdup weekly hostname
第2レベルダンプ - hdup daily hostname



Q7: アーカイブからレストアするにはどうすればよいのですか?
A: アーカイブをレストアするには以下のようにします:
$ hdup restore ホスト名 日付 対象

ただし
ホスト名 - レストアしたいマシン名
日付 - 指定日の状態が完全に復元される
対象 - 指定ディレクトリにアーカイブが展開される



Q8: 一つのファイルだけをレストアするにはどうすればよいのですか?
A: 特定のファイルをレストアしたいときは, -s <パス> を使いま す:
$ hdup -s /home/miekg/lostfile restore ホスト名 日付 対象

これにより/home/miekg/lostfileがアーカイブから展開されます. 最初の' /'は落とされ, 対象ディレクトリ以下に展開されます. <対象 >/home/miekg/lostfileがレストアされるファイルの場所です.

注意:
レストアするファイルはフルパスを指定する必要があります. たとえば, 'motd'だけを指定した場合, アーカイブから特定のファイルをレストアし ている時にはGNU tarはアーカイブ内の一致するファイルを探せません. '-s /etc/motd'のように指定する必要があります.



Q9: hdupで@remotehostシンタクスを使うとOpenSSHにパスワードを訊 かれます. cronで実行するためにどのように対処すればよいでしょうか?
(Art Sackettにより更新)
A: 対処法には2通りあります. 安全な方法とあまり安全ではない方法です. 両方とも列記しましょう:
  1. 安全な方法
    キーチェーンスクリプトを使います. 素晴らしいハウツーが以下にありま す:

    キーチェーンはリモートマシンがリブートすると壊れますが, 空のパスフ レーズは不要です.

  2. あまり安全ではない方法
    ローカルホストにて:
    ステップ1.
    identityファイルの作成:
    $ ssh-keygen

    パスフレーズを使わないこと.

    ステップ2.
    identityファイル: id_dsa.pub の内容をコピー
    リモートホストにて:
    id_dsa.pubの内容を~user/.ssh/authorized_keysに置く.

    この'user'はアーカイブがsshにより置かれるホストでのユーザ名です. こ の後は:


    $ hdup monthly localhost @user@remotehost

    によりパスワードなしでアーカイブをリモートホストへ転送します.

    注意: これは安全なテクニックではありません. 可能な限り第1の方法を使 いましょう.



Q10: アクセスを制限できますか?
(Boris Goldowskyによる)
A: 可能です. SSHにより以下のように設定することができます. authorized_key2ファイルに, 次のような記述をします:
from="IP ADDRESS",command="/usr/local/bin/hdup -c /etc/hdup.conf remote HOST",
no-port-forwarding,no-agent-forwarding,no-X11-forwarding ssh-rsa 
AAAAB3NzcC1y.....

ここでIPADDRESSはあなたの接続元で, ワイルドカードを含ませることがで きます: 10.0.0.* も指定可能です.
またHOSTはリモートでバックアップしたいホストです.

あなたのキーが認められれば, 'hdup'を実行するだけでよくなります.



Q11: 特定のファイルだけをバックアップするにはどうすればよいので すか? たとえば, *.docと*.txtファイルだけをバックアップすることは可 能ですか?
A: 可能です. 'include'文で実現できます. *.txtと*.docファイルだけを バックアップしたい場合は次のように指定します:


dir = /home/miekg
include = *.txt, *.doc

これにより/home/miekg以下で*.txtか*.docに該当するファイルすべてをバッ クアップします. 'tar_patch'を指定すると, このオプションを与えたとき だけ完全ダンプを作成します. バックアップすべきファイルの一覧を作成 するために'find'を使います. バックアップは2段階の過程を経て作られま す: 第1にバックアップするファイルを見付け, 第2にバックアップを実行 します.



Q12: リモートバックアップはどのように動作しますか?
A: リモートバックアップはhdupでは非常に簡単です. hdupをcronから走 らせたい場合, パスワードなしてリモートホストにsshで接続できるように しておきましょう.
ステップ1:
リモートのhdupプログラムの場所をローカルな設定に加えておきます:
[localhost]
remote hdup = /usr/local/bin/hdup
remote hdup option = -c /usr/local/etc/hdup.conf

ステップ2:
リモートホストで以下をhdup.confに加えます:
[localhost]
allow remote = yes

ステップ3:
ローカルホストにバックアップを作成し, リモートホストに送ります:
$ hdup monthly localhost @user@remotehost



Q13: リモートレストアはどのように動作しますか?
A: 基本的にリモートバックアップと同様な動作をします. リモートの hdupの場所を指定し, 'allow remote'をyesにします.

レストアは次のようにして実行できます:


$ hdup restore localhost 2003-03-2003 /tmp/a @user@remotehost

完了したとき, レストアされたアーカイブはリモートホストの/tmp/aに置 かれています.

Q14: 前/後処理はどのように指定すればよいのですか?
A: 'prerun = startscript'および'postrun = endscript'により, hdupに 実際のバックアップ前にstartscriptを, バックアップ後にendscriptを実 行するよう指示します. たとえば, SaMBa共有をマウントし, バックアップ し, マウントを解除するような場合に利用できます.

どのようなスキームであろうとも常に実行されます. スクリプトで何をす べきかを判断させるのがベストでしょう. つまり, 'prerun = script %s' と指定し, シェルスクリプトを以下のようにします:


#!/bin/sh
if [ "$1" == "restore" ]; then exit 1; fi
echo "rest of the script here"
   

展開される変数の一覧はhdup.conf(5)にあります.

Q15: アーカイブからレストアするとき変な数のディレクトリが出てきます.
A: 古いバージョンのtarを用いている場合, インクリメンタルtarファイ ルの処理に問題があります. --listed-incrementalで作られたtarファイル を展開する際, tarは07510533400/のような"チェックサムディレクトリ"を 作成します. tarファイルはここで展開されます.

この問題が発生した場合, バージョン1.13.25のtarにアップグレードしま しょう. [Petr DivinaによりSolarisで検証されました]



Q16: hdupはアーカイブをCDサイズのチャンクに分割できますか?
A: 開発バージョンである1.6.12と同様, hdupはアーカイブを分割すること ができます. この機能を使うには, 設定ファイルで"chunk size="オプション を使います. 例えば, ハードディスクの内容を1.44Mサイズのチャンクに分割 したアーカイブにバックアップする(大量のフロッピーが必要でしょうが)と しましょう. このとき, "chunk size = 1440k"と指定することになります. CDに焼けるようにアーカイブを作成するには"chunk size = 640M"と指定しま す.

分割アーカイブのチャンクは"__split_XX"という拡張子がつけられます. こ こでXは文字で置き換えられます. 最初のアーカイブには"__split_aa", 2番 目のアーカイブには"__split_ab"が付加され, 最後には"__split_zz"がつけ られます. 合計で 26 * 26 = 676 チャンクまで対応しています.



Q17: hdupの暗号化機能はどう使えばよいのでしょうか?
A: 暗号化の試用はhdupでは比較的分かりやすいと思います. まずhdupが暗 号化に使用するアルゴリズムを指定します:

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 
blowfish-compat (56): cbc cfb ctr ecb ncfb nofb ofb 
...

各行の最初の語句のみが重要です. 例えばrijdael-192(NSA推奨なので使いた くないかもしれませんが)を使うとします. 次にアーカイブの暗号化に必要な 鍵をファイルとして作成します:
cat > my_secret_key
this is a very secret key
^D

次にhdupにこのファイルを使うように指示します. host文の下に以下のよう な指示を追加しましょう. もし全てのホストで同じ暗号化をしたいのであれ ばglobal文の下でも構いません:
[myhost]
algoritm = rijndael-192
key = /path/to/my/key/my_secret_key

これで完了です. hdupはアーカイブの暗号化にmcryptを使用します.

註:
暗号化がローカルな操作であることに気がついたでしょう. 暗号化されたリ モートのアーカイブはローカルに生成されてからリモートホストに転送され るのです. レストアはその逆の手順を踏みます: 暗号化されたアーカイブが 直接クライアントに送られ, レストア中に平文化されます. この方法の利点 はリモートマシンにいる人々にアーカイブの内容を見られずに済むというこ とです. 一方で欠点としては秘密鍵をどこか安全な場所に保管しておく必要 があることです(バックアップしている機械に置きっぱなしにしているとクラッ シュしたときに復元できなくなります).



Q18: 中心バックアップホストとは何ですか?
A: 何かとてもクールなものです. 詳しく知りたい場合にはwww.miek.nlの howtoを見てください.

Q19: 古いアーカイブを削除するよい方法はありますか?
A: 2ヶ月経った古いアーカイブを削除するcronジョブを使うことができます (example/を参照しましょう).

もしくは, hdupの設定ファイル中で'no history = yes'と設定することもで きます. これにより全てのアーカイブで単一のディレクトリかつ同じ名前を 使うことになります. アーカイブは次のようになります: static/hostname.monthly.static.tar.gz.
このように, 新しいバックアップは古いバックアップに上書きされることに なり, マシンのスペースが節約できます.

このオプションを使うときは注意しましょう!バックアップが失敗 したとき, (上書きされた)古いバックアップも(書きこみに失敗した)新しい バックアップもなくなってしまいます! example/にバックアップ後にアーカ イブを安全な場所にコピーする小さな実行後スクリプト (no-history-post-run.sh)がありますので参照してください. 自分が何をし ているのか分かっている場合のみこのオプションを使うようにしましょう.



Q20: バックアップ作成は成功し, レストアは失敗します. 何故ですか?
(Contributed by: Jiri Bajer)

A: /var/tmpに十分な空きはありますか? 手早く問題を解決するために /var/tmpを(十分な空きのある)別のディスクのサブディレクトリにマウント するという手もあります.

Q21: ファイルリダイレクションがうまくいきません.
A: hdupは全てのログを標準エラーに送ります. hdupがリモート操作をして いる場合, アーカイブは標準出力に送られます. アーカイブに混ざらないよ うに, 他の出力はすべて標準エラーに送られます. リダイレクトしたい場合 には次のようにします:
hdup 2> bla

最新情報: バージョン1.6.14と同様, 再び概要が標準出力に送られるよ うになりました. しかし全てのエラーメッセージはまだ標準エラーに送られ ています.



Q22: 分割されたアーカイブの内容を表示するにはどうすればよいのですか?
A: 表示できるのですが, hdupでは無理です. 以下のようにします:
見たい分割アーカイブのある場所に移動し, 次のようにタイプします:
cat hostname.monthly.* | tar tvfz -

もちろんtarに正しいオプションを与え, 見たいアーカイブをcatすることが 必要です.

Q23: hdupの実行ファイルはどこにインストールされますか?
A: バージョン1.6.11と同様(hdupのコンパイルにautoconfが使われるように なったバージョンです), hdupの実行ファイルは/usr/local/binにインストー ルされます. それ以前であれば/usr/local/sbinにインストールされます.

Q24: tarが変なメッセージを表示して失敗します.
それは次のようなものでしょうか:
/usr/local/sbin/hdup: www: STARTING BACKUP.
/usr/bin/tar: can't add file --files-from : No such file or directory
/usr/bin/tar: Removing leading / from absolute path names in the archive.
/usr/bin/tar: can't add file --listed-incremental : No such file or directory
/usr/bin/tar: can't add file /backup/www/etc/inclist.monthly : No such file or directory
/usr/bin/tar: can't add file --exclude-from : No such file or directory
/usr/bin/tar: can't add file --ignore-failed-read : No such file or directory
あなたのtarがGNU版でないか, バージョンが古すぎます. GNU tarバージョン 1.3.25以降にバージョンを上げてください.

Q25: インクリメンタルバックアップが完全バックアップと同じくらい大きくなります(SaMBa使用).
ウィンドウズファイルのバックアップにSaMBaを使用している場合, 使用し ているファイルシステムがfat(またはvfat)よりも良いものであることを確認し てください. これら古いファイルシステムではインクリメンタルバックアップの ための十分な機能がありません. 常に完全ダンプが実行されることになります.

Q26: 現在知られているバグはありますか?
A: %aの展開が実行前スクリプトと実行後スクリプトで同じになりません(暗 号化使用時).

Q27: rpmをビルドするにはどうすればよいですか? 以下のようにしましょう:
wget http://www.miek.nl/projects/hdup16/previous/hdup-1.6.XX.tar.gz
rpm -tb --clean hdup-1.6.XX.tar.gz
rpm -Uvh /usr/src/redhat/RPMS/i386/hdup-1.6.XX-1.i386.rpm
XXはhdupリリースバージョンです.