Linux でバックアップを取る。

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 するなりして確認します。

by islandcenter | 2006-01-23 21:18 | SUSE | Comments(0)