http://ezxnet.com/netatalk/entry2307/
Netatalkのエラー
2012/06/16 2013/03/24
Netatalkについての記事です。
Netatalkのインストールが終わってハードディスクの増設もして増設したディスクを丸ごとAppleVolumes.defaultsに共有するように設定。
ためしにMacからAFPにてフォルダごとコピーを作成してみる。
フォルダの容量は13GB位のサイズでペーストをすると200MB位でエラーになってしまう。
予期しないエラーが起きたため、操作を完了できません(エラーコード -50)。とダイアログが表示される。
予期しないエラーが起きたため、操作を完了できません(エラーコード -50)。
Netatalkのlogを確認
場所 /var/log/netatalk.log
volume “home2” does not support Extended Attributes, using ea:ad instead
スポンサーリンク
このようなエラーが表示されていたのでApple.Volumes.defaultsの設定を見直し。
ea:sysと拡張属性の保存方法の設定に不備があったので以下に修正。
:DEFAULT: options:upriv,usedots dperm:0700 fperm:0600 maccharset:MAC_JAPANESE ea:sys
サーバを再起動してもう一度同じフォルダをコピーを実行。
また同じエラーになる。
もう一度ログを確認すると今度はさっきとは違うエラーが表示される。
sys_getextattr_content(com.apple.quarantine): error: Operation not supported
19:58:22.472900 afpd[2338] {ea_sys.c:341} (E:AFPDaemon): sys_set_ea(“/mnt/hitachi2tb/home2/document/CS5/install3.png”, ea:’com.apple.metadata:kMDItemIsScreenCapture’, size: 42, flags: -|-|-): Operation not supported
19:58:22.474096 afpd[2338] {ea_sys.c:341} (E:AFPDaemon): sys_set_ea(“/mnt/hitachi2tb/home2/document/CS5/install3.png”, ea:’com.apple.metadata:kMDItemScreenCaptureType’, size: 48, flags: -|-|-): Operation not supported
19:58:31.387574 afpd[2338] {filedir.c:311} (E:AFPDaemon): check_name: illegal name: ‘.AppleDouble’
19:58:31.390029 afpd[2338] {filedir.c:311} (E:AFPDaemon): check_name: illegal name: ‘.AppleDouble’
20:06:57.108033 afpd[2338] {ea_sys.c:185} (E:AFPDaemon): sys_getextattr_content(com.apple.quarantine): error: Operation not supported
20:06:57.137380 afpd[2338] {ea_sys.c:185} (E:AFPDaemon): sys_getextattr_content(com.apple.TextEncoding): error: Operation not supported
内容を見ても理解が難しいがいくつかのファイルがサポートしていないような気がする。
調査を始めようと思います。
コメント一覧
HAT より:
2012/06/16 20:58
volume “home2″ does not support Extended Attributes, using ea:ad instead
の前の部分に注目してください。(W:AFPDaemon)となっており、WがWarningを表しています。Errorではありません。eaが使えないので代わりにadを使うというメッセージです。
更にea:sysを設定したことで、代わりにadを使う動作が行なわれず、eaを使おうとしてErrorになっています。
netatalkの設定ではなく、ファイルシステム自体のeaを使えるようにする必要があります。
fstab user_xattr
で検索すると方法が見つかります。
実際にエラーになっているのは、
(E:AFPDaemon): check_name: illegal name: ‘.AppleDouble’
です。
「.AppleD」で始まるファイル名は予約されているためコピーできません。マニュアルに載ってます。
あと、別件ですが、エラーメッセージ類を画像で貼付けるのは良くないと思います。
文字列検索できないし、コピー&ペーストもできません。
返信
brah より:
2012/06/16 21:45
HAT様
コメントありがとうございます。
早速ですが、画像を削除しておきました。
いつもお騒がせしています。
問題になっているのはファイルシステムで拡張属性を使えるようにする事と、コピー元のデータに隠しファイルで.AppleDを探せば良さそうですね。がんばってみます。
返信
HAT より:
2012/06/16 23:52
エラーメッセージはテキストのまま全部コピー&ペーストしてblogに貼付けるのが良いですよ。どこかの誰かが同じ問題で検索したとき見つかります。
あと、次のnetatalk 3.0では、.AppleDoubleとか.AppleDBが予約されないので、この問題が解消されます。
返信
brah より:
2012/06/20 19:48
.AppleDoubleフォルダを探す
$ find document -name “.AppleDouble”
document/.AppleDouble
フォルダの中身を確認
$ ls -a
.
..
.AppleDouble
.DS_Store
フォルダの削除
$ rm -r .AppleDouble
$ rm -r .DS_Store
フォルダの中身を確認
$ ls -a
.
..
ファイルシステムに拡張属性を有効にする
# gedit /etc/fstab
# /etc/fstab
# Created by anaconda on Sat Apr 14 20:20:56 2012
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk’
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 defaults 1 1
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /boot ext4 defaults 1 2
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=/home2 /home2 ext4 defaults,user_xattr 0 0
拡張属性を有効にするために”user_xattr”を追加
システム再起動
# shutdown -r now
ファイルを転送すると今度はエラーが表示されずにすべてのデータが移行できた様子。
念のためログを確認
$ vi /var/log/netatalk.log
ログを確認したらエラーがないのでこれで状態が改善しました。
かなりうれしいです。
.AppleDoubleフォルダには気をつけないといけませんね。
返信
HAT より:
2012/06/21 23:49
そもそもMac側に.AppleDoubleディレクトリがあったのが異常です。
netatalk以外を経由してCentOSからMacにファイルをコピーしたのが原因でしょう。
そういう使い方をしてはダメです。
netatalkを使うのなら、CentOSとMac間のコピーはnetatalkのみで行なってください。
.AppleDoubleディレクトリを削除したことで、Mac特有のメタデータを喪失したことになります。そのメタデータに重要な情報が含まれていたかどうかは、今となってはわかりませんが。
返信
brah より:
2012/06/22 00:30
HAT様
データの転送は以後Netatalk以外を使わないように気をつけたいと思います。
メタデータの削除をしてしまうとファイルの整合性が取れなくなってしまうというのもわかったので安直に削除をしてもよくないですね。
返信
HAT より:
2012/06/22 01:05
CentOSからMacにデータを移したのと同じ方法で、MacからCentOSにデータを戻すべきでした。
そうすれば、元の状態に戻る確率が高いです。
返信
brah より:
2012/06/22 23:52
HAT様
わかりました。
話が変わるのですが、/usr/local/etc/netatalk/AppleVolumes.defaultの設定で共有するフォルダをユーザーごとに分ける事ができますか?
CentOSに複数のユーザアカウントを作成していてAのユーザーはAフォルダのみ読み書き可能、BのユーザーはBフォルダのみ読み書き可能。
そのような設定方法がありますか?ユーザごとにディスクを振り分けて使いたいというのもあります。
マニュアルでは
/disk1/home/Adirectory/userA/$u “Adirectory”
/disk2/home/Bdirectory/userB/$u “Bdirectory”
とすることでdisk1のAdirectoryのuserAがユーザAのみ読み書き可能、disk2のBdirectoryのuserBがユーザBのみ読み書き可能。
という解釈をしてよろしいでしょうか?
TimeMachineのバックアップ先もこのような感じでユーザごとに変更する事も可能でしょうか?
disk1/home/Adirectory/TimeMachine “TimeMachine” options:tm volsizelimit:600000
disk2/home/Bdirectory/TimeMachine “TimeMachine” options:tm volsizelimit:700000
返信
HAT より:
2012/06/26 01:47
それは実際に試してみれば判ることではないでしょうか。
2番目のケースはボリューム名が同じなので、もし設定できたとしても、Macからみたときに混乱しないでしょうか。
こういう個人的な質問を個人のブロクでいちいち回答するのは苦痛です。
私のブログに書いていただくか、メーリングリストに投稿してください。
返信
brah より:
2012/06/26 07:20
HAT様
大変失礼しました。ご不快に感じさせてしまい申し訳ありません。
試してみて以降質問は貴殿のブログで質問させていただきます。

コメント