blog/content/post/2008/08/09/2008-08-09-00000992.md

7.0 KiB
Raw Blame History

title author date url wordtwit_post_info categories
iMacと玄箱でバックアップをとりたい kazu634 2008-08-09 /2008/08/09/_1067/
O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4201;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}
linux
rsync
unix

現状ではiMacからSamba経由で玄箱にアクセスしている状態です。しかしこれだと全部手動でやらなければいけない。これだと面倒なので、自動でバックアップを行うようにしてみたいと思う。

とりあえず自分の知っている知識

  • ネットワーク越しのバックアップにはrsyncというのがある…らしい
  • Unix / Linuxで自動的に処理をさせるcronという仕組みがある…らしい
  • cronはシェルスクリプトを登録する仕組みらしい

これぐらいの知識で、何とか自動的にバックアップをとるようにしていきたい。これが今日の課題。

rsync

公式ページは「rsync」。Leopardにはすでにあるので、玄箱のDebianに導入する。

# su
# apt-get install rsync

でrsyncを導入する。rsyncでネットワーク越しにファイルをコピーする場合、どちら側にもrsyncが存在しなければならないらしい。

rsyncの使い方は「 Command Technicaはじめてrsyncを使う方が知っておきたい6つのルール (1/2) ITmedia エンタープライズ」を参照するといい。ネットワーク越しにコピーする場合、「ユーザ名@ホスト名:ディレクトリ」という形式で指定すればいい。たとえば

# rsync -avz --delete -e ssh ~/Documents/howm backup@kurobox:/home/backup

でもこれだと、sshでkuroboxサーバ上のbackupユーザのパスワードを入力するように求められてしまう。これだと自動化できないので、パスワード認証無しで通るようにする。

sshでの認証

ITsshでパスワードなしにログインするには」を参考にすればいい。私の場合、玄箱は常時電源ONでiMacは付けたり消えたりしている。だから、玄箱の側でiMacの状態を確認しながらrsyncを起動するようにした。だから、「ITsshでパスワードなしにログインするには」のsshサーバがiMac側での作業になる。リモートが玄箱。

ここで大事なのがパスフレーズの入力の時に空白にすること*1。これでよくなる。

基本的な手順はまずiMac側

# ssh-keygen -t rsa ←RSA暗号方式の鍵を作成
Generating public/private rsa key pair.
Enter file in which to save the key (/home/nori/.ssh/id_rsa): Enterキー
Enter passphrase (empty for no passphrase): Enterキー
Enter same passphrase again: Enterキー
Your identification has been saved in /home/nori/.ssh/id_rsa.
Your public key has been saved in /home/[任意のユーザ名]/.ssh/id_rsa.pub.
The key fingerprint is:
# cd ~/.ssh
# cat id_rsa.pub >> $HOME/.ssh/authorized_keys
# chmod 600 $HOME/.ssh/authorized_keys

そして~/.sshにあるid_rsaを玄箱の/home/backup/.sshにコピーして、backupユーザにsuする。玄箱上では

# eval `ssh-agent`
Agent pid 1084
# ssh-add
Identity added: /home/backup/.ssh/id_rsa (/home/backup/.ssh/id_rsa)

この手順でよくなる。

cronに登録するよ

とりあえずシェルを作る。pingでiMacが応答すればrsyncを実行する。「> /dev/null 2>&1」は標準出力とエラー出力を表示させないようにするおまじない。

if ping -qc 1 myimac > /dev/null 2>&1
then
rsync -avz --delete -e ssh simoom634@myimac:/Users/simoom634/Documents/howm /home/backup > /dev/null 2>&1
rsync -avz --delete -e ssh simoom634@myimac:/Users/simoom634/Documents/hatena /home/backup > /dev/null 2>&1
fi

これをcronに登録する。参考になるのは「404 エラー: 404」。

# su
# crontab -u backup -e
[編集]

ここでの編集内容は

40 * * * * /usr/bin/backup.sh

この設定だと、毎時間40分になったら/usr/bin/backup.shを実行することになる。

できた!

こんな過程を通して、自動でバックアップする環境ができました。これで楽ちんができる。