web-dev-qa-db-ja.com

rsyncが「chown <...>失敗:無効な引数(22)」をnfs共有で提供する

Rootとして実行されるシェルスクリプトを介して、rsyncを使用してシステム全体を外部ディスクにバックアップしようとしています。

#!/bin/bash
rsync -vSHPhhaX --numeric-ids --delete --exclude-from=/home/rena/.scripts/exclude-list / /home/rena/video/.backup/>/home/rena/video/.backup.log

このスクリプトは、マシン "akira"で実行されています。元々、/ home/rena/videoはakiraに直接接続されたUSBハードディスクであり、スクリプトは問題なく動作しました。

最近、ディスクを移動しました。これで、別のマシン「yuki」の同じパスにマウントされ、NFSを介して共有されます。したがって、akira:/ home/rena/videoは同じUSBハードディスクを参照しますが、akirに直接接続するのではなく、yukiに接続してnfsで共有します。ディスクはext3を使用しており、Truecryptで暗号化されています。

yukiの/ etc/exportsは次のとおりです。

/home/rena  akira(rw,subtree_check,nohide,no_root_squash) rei(rw,subtree_check,nohide,no_root_squash)
/home/rena/video    akira(rw,subtree_check,nohide,no_root_squash) rei(rw,subtree_check,nohide,no_root_squash)

ここで、rsyncはすべてのファイルに対してエラーを出します。

rsync: chown "/home/rena/video/.backup/boot/System.map-2.6.38-8-generic" failed: Invalid argument (22)

nfsはしないように言われているのに、「つぶし」ているように見えますか?

rena@akira $ stat /home/rena/video/.backup/boot/abi-2.6.38-10-generic
  File: `/home/rena/video/.backup/boot/abi-2.6.38-10-generic'
  Size: 730457          Blocks: 1440       IO Block: 65536  regular file
Device: 19h/25d Inode: 38822526    Links: 1
Access: (0644/-rw-r--r--)  Uid: (65534/  nobody)   Gid: (65534/ nogroup)
Access: 2011-10-19 22:17:12.000000000 -0600
Modify: 2011-06-28 13:19:43.000000000 -0600
Change: 2011-10-19 22:17:12.000000000 -0600

rena@yuki $ stat /home/rena/video/.backup/boot/abi-2.6.38-10-generic
  File: `/home/rena/video/.backup/boot/abi-2.6.38-10-generic'
  Size: 730457      Blocks: 1440       IO Block: 4096   regular file
Device: fc04h/64516d    Inode: 38822526    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2011-10-19 22:17:12.000000000 -0600
Modify: 2011-06-28 13:19:43.000000000 -0600
Change: 2011-10-19 22:17:12.000000000 -0600

akiraから、UIDとGIDは異なるように見えます。おそらくrsyncが失敗する理由は?

[編集]実際にはakiraのように見えますevery共有上のファイルにはUIDとGID 65534/nobodyがあります。

7
Rena

これはnfs-server(yuki)の名前解決の問題のようです。

  1. 名前解決が/etc/nsswitch.confのホストのファイルに最初に設定されていることを確認してください
  2. /etc/Host.confがある場合は、解決順序がorder hosts bindに設定されていることを確認してください
  3. クライアントのIPをNFSサーバーの/etc/hostsに配置します。ショートネームがIPに続く最初のエントリであることを確認してください。
1
Nils

これがNFSv4ではないと想定すると、匿名で共有しているように見えます。デフォルトではuid/gidの一致がないため、nobody/nogroupが割り当てられています。

0
slashdot