Rsyncでディレクトリのバックアップ

Linuxの標準的バックアップツールrsyncを使ってディレクトリのバックアップを作成する.

参考にしたページ達:
http://www.itmedia.co.jp/enterprise/articles/0804/21/news013.html
http://www.maruko2.com/mw/rsync_でディレクトリの同期(バックアップ)
http://x68000.q-e-d.net/~68user/unix/pickup?rsync

rsyncの実行

各種オプション等については参考ページにて大変詳細かつ分かりやすく記載されているのでここでは省略.
以下のコマンドを実行した.

1
$ rsync -avh /コピー元 /コピー先

rsyncではコピー元のディレクトリ名指定に気をつける(スラッシュのあるなしでかなり違う).

  • rsync -avh /コピー元 /コピー先
    ディレクトリも含めてコピー
  • rsync -avh /コピー元/ /コピー先
    指定したディレクトリ以下をコピー

なお,コピー先の指定の場合はどちらでも大丈夫.

実行時のエラー

rsyncを実行してしばらくたつと,以下のメッセージを吐いてバックアップがこけた.

1
2
3
4
5
rsync: writefd_unbuffered failed to write 4 bytes to socket [sender]: Broken pipe (32)
rsync: write failed on "ファイル名": No space left on device (28)
rsync error: error in file IO (code 11) at receiver.c(301) [receiver=3.0.6]
rsync: connection unexpectedly closed (31 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]

何事だろうと思ってこけたファイルを確認すると,

1
2
$ ls
-rw-r--r--. 1 root 96G  3月 10 12:22 2012 /****/***.gz

96GB\(^o^)/w
このファイルに対してコピー先HDDのフォーマットがFAT32だったのが原因だった.
FAT32はファイル制限が4GBなので,どう頑張っても対象ファイルのバックアップはとれない.
詳細はリンク先を参照:http://glenrothes.blog27.fc2.com/blog-category-4.html

NTFSでフォーマットし直して無事にバックアップがとれた.

rsyncの定期実行

無事にrsyncが実行できていることを確認したら,cronを利用してrsyncを定期実行させる.
ここで再び問題発生.

1
2
3
4
$ crontab -l
zsh: command not found: crontab
$ which crontab
/usr/bin/which: no crontab in (****)

crontabがないのでyumから導入する.

1
2
3
$ yum install crontabs vixie-cron
$ crontab -l
no crontab for root

これでよし.
cronを実行するためにcrondの設定も行う.

1
2
3
4
5
6
7
$ service crond status
crond は停止しています
$ service start crond
crond を起動中:                                            [  OK  ]
$ chkconfig crond on
$ chkconfig --list
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off

最後にcrontab -eを実行し,に以下の様に処理を追加.

1
00 3 * * * root /usr/bin/rsync -avh /コピー元 /コピー先

この例では,毎日午前3時にrsyncコマンドによるバックアップ処理を行なっている.
crontabの書き方についてはリンク先参照:http://www.server-memo.net/tips/crontab.html

Comments