ZFS ACL の領域を rsyncする (--chmodオプション)

普段、Windowsから Solarisをファイルサーバに使っていますが
CIFS をつかっている都合(?)なのか、サーバ上は以下になります。


$ ls -al /rpool/share/
...
---------- 1 hoge staff 184937 2009-05-29 23:49 cm.jpg
d--------- 5 hoge staff 8 2009-05-10 06:22 iso/
d--------- 4 hoge staff 9 2009-05-10 06:25 tmp/
...

権限がないようにも見えますが、ZFS ACL 上の権限では問題ないので、CIFS経由や自サーバ上は何の問題もなく使えます。


$ /usr/bin/ls -lv /rpool/share/
...
----------+ 1 hoge staff 184937 5月 29 23:49 cm.jpg
0:user:hoge:read_data/write_data/append_data/read_xattr/write_xattr
/execute/delete_child/read_attributes/write_attributes/delete
/read_acl/write_acl/write_owner/synchronize:allow
1:group:2147483648:read_data/write_data/append_data/read_xattr
/write_xattr/execute/delete_child/read_attributes/write_attributes
/delete/read_acl/write_acl/write_owner/synchronize:allow
...

ただ、この領域を 別のLinux(Debian)に rsync しようとすると話は変わります。
rsync から ZFS acl なんて見ないし。


$ ls -al /rpool/share/test/
d--------- 2 hoge staff 4 2009-05-30 12:33 a/
d--------- 2 hoge staff 2 2009-05-30 12:32 b/
---------- 1 hoge staff 184937 2009-05-29 23:49 cm.jpg
$ ls -al /rpool/share/test/a/
---------- 1 hoge staff 43520 2009-05-30 12:33 Thumbs.db
---------- 1 hoge staff 184937 2009-05-29 23:49 cm2.jpg
$
$ rsync -av /rpool/share/test/ 192.168.1.12:/mnt/test/
building file list ... done
cm.jpg
a/
rsync: recv_generator: failed to stat "/mnt/test/a/Thumbs.db": Permission denied (13)
rsync: recv_generator: failed to stat "/mnt/test/a/cm2.jpg": Permission denied (13)
b/

sent 185170 bytes received 54 bytes 74089.60 bytes/sec
total size is 413394 speedup is 2.23
rsync error: some files could not be transferred (code 23) at main.c(977) [sender=2.6.9]

そのまま、rsyncするので一層目はよいのですが、リカーシブ的に書きこもうとすると、"Permission denied"になります。
Linxu上は、権限 000 なので当然か。

なので、rsync先の権限を変更するオプションを追加します。(こんなオプションもあるんですね。)


$ rsync -av --chmod=u+rwx /rpool/share/test/ 192.168.1.12:/mnt/test/
building file list ... done
a/
a/Thumbs.db
a/cm2.jpg
b/

sent 228746 bytes received 82 bytes 65379.43 bytes/sec
total size is 413394 speedup is 1.81

rsync先はこんな感じ。


kurobox-pro:/mnt$ ls -al test/
drwx------ 2 hoge hoge 36 2009-05-30 12:33 a
drwx------ 2 hoge hoge 6 2009-05-30 12:32 b
-rwx------ 1 hoge hoge 184937 2009-05-29 23:49 cm.jpg
kurobox-pro:/mnt$ ls -al test/a
-rwx------ 1 hoge hoge 43520 2009-05-30 12:33 Thumbs.db
-rwx------ 1 hoge hoge 184937 2009-05-29 23:49 cm2.jpg

なんでこんなのを調べたかって?
Solaris側の筐体開けてHDDを追加して ZFSミラー するのが面倒なので、とりあえず立ち上げている 玄箱(Debian化)をリモートミラーに使ってしまえ〜、と。