NFSしたファイルをrsyncでバックアップが正常にできなかったので、再設定
タイトルの通りなんですが、NFSでマウントしたフォルダをrsyncでバックアップしています。これまで、正常に動作していると思っていましたが、よくよくチェックすると、バックアップされていないファイルがありました。パーミッションが700とか600のファイル、フォルダです。
- 修正前の設定
サーバ側の/etc/exports
/home1 172.16.1.2(rw,fsid=0,insecure,no_subtree_check,async)
クライアント側の/etc/fstab
server:/home1 /home1 nfs auto 0 0
この状態で、以下のようなrsyncコマンドを実行します。(ホントは毎日差分バックアップを取っているので、若干違いますが、要点だけです)
rsync -av /home1 /backup/20141211backup
何をしているかというと・・・NFSマウントした/home1を、/backup/20141211backup以下に、オーナー、グループ、パーミッション、タイムスタンプなどをそのまにバックアップをとっている感じです。これで万事OKと思っていたら、ログファイルに
permission denied (13)
が山ほど書かれていました。rsyncのオプションが悪いのかと色々調べてみましたが、大抵はファイルの所有者がちがうとか、root権限で実行すればエラーが消えるとか、そんなことしか書かれていません。rootで実行してるのに・・・。--chmod=u+rwxのオプションもつけましたが、だめでした。
そもそも、なんでパーミッションが700とかなんだ?と思っていたら、sambaで新しくwindows側からファイル等を作成すると、セキュリティの関係から、デフォルトで700のマスクがかかってるんですね。とりあえず根本の解決にはならないけど、これも変更して、755とかにしておきました。
いよいよわからなくなっていたんですが、これはもしかして、NFSが怪しいのでは?と思って設定ファイルのオプションをよく見ると、デフォルトではroot_squash(クライアントからマウントしたファイルにアクセスするとき、たとえrootでもroot権限がない設定)らしい。これしかない!と思って、/etc/exportsファイルで
/home1 172.16.1.2(rw,fsid=0,no_root_squash,insecure,no_subtree_check,async)
赤字の部分を追加して、以下のコマンドでサーバのNFSを再起動しました。
# /etc/init.d/nfs-kernel-server restart
それから再度、バックアップをおこなうと、ばっちりでした。ってことで、NFSサーバ側で、NFSクライアント側にroot権限を与えない設定(それがデフォルトなんです)がいかんかったみたいです。どーせ研究室内からのアクセスしかできない(と思う)ので、これでおけです。