« OpenLDAP を使った ProFTPD サーバーの構築 | Main | mod_jk が使えなくなった. mod_proxy_ajp を使うらしい »

August 10, 2009

ssh でのバックアップに四苦八苦

 筆者は FreeBSD のマシンを LAN 内に置いていたので,バックアップは mount_smbfs で Samba マシンにとっていたのだが,先日の記事の通り,マシンを DMZ に移動した.使用しているルーター(PR-200NE)の仮想 DMZ だと,仮想 DMZ から LAN を見たときに NAT が入るらしいので, NetBIOS が通らない,したがって Samba サーバーに接続することができなくなってしまった.いちいち USB メモリーをさしてコピーするのも面倒くさいので困っていたところ, Sakura レンタルサーバーを契約していることを思い出したので,そのサーバーにバックアップすることにした.
 前にも紹介した, "FreeBSD Hacks" には,

> tar zcvf - /source_dir | ssh username@hostname "cat > /dest_dir/filename"

でバックアップすることができ,リストアは
> ssh username@hostname "cat /dest_dir/filename" | tar zxvf -

で可能と web に書いてあった.
 これではナニなので,生まれて初めて(笑)シェルスクリプトを書いてみた.まず,バックアップするディレクトリを列挙したファイルを用意する.
> cat path_to_backup
/etc
/usr/local/etc
/usr/src/sys/i386/conf

シェルスクリプトは以下
> cat my_backup.sh
#!/bin/sh

while read backup_path
do
    tar zcvf - $backup_path |\
        ssh username@hostname "cat >\
        dest_dir/`echo $backup_path | sed s,^/,, | sed s,/,_,g`.tgz"
done <$1
これを
> ./my_backup.sh path_to_backup
と実行すると,リモートホストの dest_dir に, etc.tgz , usr_local_etc.tgz と usr_src_sys_i386_conf.tgz ができる(本当は拡張子の前に `date +%d-%m-%y` としてタイムスタンプを入れたかったがうまくいかなかった).  が,しかしこれではファイルを一つ作るごとに ssh 接続するので,そのたびにパスワードをいれなければならない(鍵承認にすればいいという話もあるが).そこで,次のようにしてみた.
> cat my_backup2.sh
#!/bin/sh
echo "" > file_list
while read backup_path
do
    backup_file=`echo $backup_path | sed s,^/,, | sed s,/,_,g`'.tgz'
    tar zcvf $backup_file $backup_path
    echo $backup_file >> file_list
done <$1
cat file_list | xargs -J % scp % username@hostname:dest_dir
scp file_list username@hostname:dest_dir
cat file_list | xargs rm
rm file_list
このスクリプトを先の例のように実行してみると, scp でファイルを送り出すところまではいくのだが, xargs の EOF マーカーがおかしいらしく,入力待ちのまま止まってしまう. file_list というファイルを作るのではなく.
file_list=${file_list}${backup_file}"\n"
として,最後に変数 $file_list をファイル file_list に流し込もうとしたのだが,改行コードをどうしても出力することができずこのようになった.何かとてもスパゲッティコードだが,何とかなるものかならないものか.詳しい方いたら,請う情報. 後編に続く)

|

« OpenLDAP を使った ProFTPD サーバーの構築 | Main | mod_jk が使えなくなった. mod_proxy_ajp を使うらしい »

FreeBSD」カテゴリの記事

パソコン・インターネット」カテゴリの記事

Comments

This is really interesting, You're a very skilled blogger. I have joined your rss feed and look forward to seeking more of your excellent post. Also, I've shared your website in my social networks!

Posted by: photography classes | November 28, 2013 at 05:43 AM

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/37290/45890399

Listed below are links to weblogs that reference ssh でのバックアップに四苦八苦:

« OpenLDAP を使った ProFTPD サーバーの構築 | Main | mod_jk が使えなくなった. mod_proxy_ajp を使うらしい »