2006年 01月 23日
Linux でバックアップを取る。
何しろ NetWare から、Linux に移行するということは全部の操作を忘れ
なきゃいかんということです。
こんな簡単な事もできない事を晒すのも恥ずかしいンだけど、
基本的な操作はちゃんとメモしておかなきゃならないのですね。
大昔、 UNIX 系のプログラマだったンで、コンピュータの中のファイルを
8インチ(!))のFDにバックアップするのがワタシの仕事だったことが
あります。よく使ってましたよ tar は。でもコマンドラインはメモ見ながら
じゃなきゃ打てなかったなぁ(泪
だから、コマンドのいくつかの使い方が昔ふうなのは許してね。
ということで、まず、tarで基本的なバックアップの方法を知っておきましょうか。
1) 参考文書
次の文書が参考になりました。
第5回 システム・バックアップを基礎の基礎から
(atmarkit の記事より)
http://www.atmarkit.co.jp/flinux/rensai/root05/root05a.html
(IBM Developer Works の記事より)
WindowsからLinuxへのロードマップ: 第8回 バックアップと復元
http://www-06.ibm.com/jp/developerworks/linux/040213/j_l-roadmap8.html
Linuxでのバックアップを自動化する
http://www-06.ibm.com/jp/developerworks/linux/040723/j_l-backup.html
2) 接続されたデバイスを確認
# dmesg | grep scsi
おそらく次のような内容が表示されるはず。(RHの例ですまぬが)
SCSI subsystem driver Revision1
kmod" failed to exec /sbin/modprobe -s -k scsi_hostadapter, errno = 2"
scsi0 " Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev 6.2.8"
aic7892" Ultra160 Wide Channel A, SCSI Id=7, 32/253 SCBs"
Type Sequential-Access ANSI SCSI revision
scsi1 IBM PCI ServeRAID
Type Direct-Access ANSI SCSI revision 2
Type Processor ANSI SCSI revision 2
Type Processor ANSI SCSI revision 2
"Attached scsi disk sda at scsi1, channel 0, id 0, lun 0"
SCSI device sda 71094272 512-byte hdwr sectors (36400 MB)
"Attached scsi tape st0 at scsi0, channel 0, id 6, lun 0"
"Attached scsi tape st0 at scsi0, channel 0, id 6, lun 0"
の行を注目。テープデバイスは /dev/st0 で認識されています。
3) ドライブの状態を確認します
dmesag で確認したデバイスを mt コマンドで確認します。おそらく次のような
表示が出るはずです。(RHの例ですまぬが)
# mt -f /dev/st0 status
blk: queue c3a10818, I/O limit 4095Mb (mask 0xffffffff)
Vendor: SEAGATE Model: DAT 9SP40-000 Rev: 9070
Type: Sequential-Access ANSI SCSI revision: 03
他にも
# cat /proc/scsi/scsi
を実行して、内容を確認。
4) tar でバックアップを実行
# tar -cvpf /dev/st0 / --exclude=/proc
-c -- 必須のオプション(Create)
-v -- verbose (バックアップ中のファイルが表示されます)
-p -- パーミッションを併せてバックアップ
-f -- バックアップ対象のファイルを選びます。
--execute=PATH PATH を除外します。
上のコマンドは /dev/st0 のデバイスに / (root) から /proc を除いて全てバックアップ
する操作になります。
IBM のサンプルには cpf オプションを使っていますが、v オプションを加えると
実際にバックアップ中のファイルがスクロールするので「バックアップしている」
という進捗が「実感」できます。おお、やってるぞってね。
他の例)
# tar -cvpf /dev/st0 /home ---> /home だけバックアップします。
5) tar を使ってアーカイブを作成
tar の基本的な目的は Tape ARchive なんだけど、ほとんどその目的より
データを固める目的で使われます。まぁZIP するような目的ですね。
日付と時刻をファイル名に付けたい場合 --
backup.sh ファイルを vi などで次のように作成します。
tar -cvpf $1.$(date +%Y%m%d%-H%M%S).tgz $1
実行権を与えます。
# chmod -v 777 backup.sh
※ rwx のビットを全てオンにします。
あるいは(?)こっちが普通なんでしょうか。
#chmod u+x backup.sh
バックアップ用アーカイブを作成します。
# ./backup.sh /etc ---> この例では /etc をアーカイブします。
/にこの例では "etc.日付時刻.tgz" が作成されるので、このファイルを
ftp で転送するなり USB メモリにコピーするなどしてバックアップします。
このファイルの内容を確認する場合
# tar -tf file_name.tgz で内容を確認します。
※※更にログ付きモード
これでは「固める」動きがあまりにも「実感」できてしまい、ちょっと
鬱陶しいわけなんで、この動きをリダイレクトしてログにしてしまいます。
もちろん、コンソールに余計なモノが出てこないンでスピードも速い。
tar -cvpf $1.$(date +%Y%m%d%-H%M%S).tgz $1 > $1.$(date+%Y%m%d%-H%M%S).log
あとは log ファイルを more するなり、cat するなりして確認します。