Netatalkのエラー

   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

内容を見ても理解が難しいがいくつかのファイルがサポートしていないような気がする。
調査を始めようと思います。

  • このエントリーをはてなブックマークに追加
  • Pocket
  • follow us in feedly

コメント一覧

  1. HAT より:

    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 より:

      HAT様
      コメントありがとうございます。
      早速ですが、画像を削除しておきました。
      いつもお騒がせしています。
      問題になっているのはファイルシステムで拡張属性を使えるようにする事と、コピー元のデータに隠しファイルで.AppleDを探せば良さそうですね。がんばってみます。

  2. HAT より:

    エラーメッセージはテキストのまま全部コピー&ペーストしてblogに貼付けるのが良いですよ。どこかの誰かが同じ問題で検索したとき見つかります。

    あと、次のnetatalk 3.0では、.AppleDoubleとか.AppleDBが予約されないので、この問題が解消されます。

    • brah より:

      .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フォルダには気をつけないといけませんね。

  3. HAT より:

    そもそもMac側に.AppleDoubleディレクトリがあったのが異常です。
    netatalk以外を経由してCentOSからMacにファイルをコピーしたのが原因でしょう。
    そういう使い方をしてはダメです。
    netatalkを使うのなら、CentOSとMac間のコピーはnetatalkのみで行なってください。
    .AppleDoubleディレクトリを削除したことで、Mac特有のメタデータを喪失したことになります。そのメタデータに重要な情報が含まれていたかどうかは、今となってはわかりませんが。

    • brah より:

      HAT様
      データの転送は以後Netatalk以外を使わないように気をつけたいと思います。
      メタデータの削除をしてしまうとファイルの整合性が取れなくなってしまうというのもわかったので安直に削除をしてもよくないですね。

  4. HAT より:

    CentOSからMacにデータを移したのと同じ方法で、MacからCentOSにデータを戻すべきでした。
    そうすれば、元の状態に戻る確率が高いです。

    • brah より:

      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

  5. HAT より:

    それは実際に試してみれば判ることではないでしょうか。
    2番目のケースはボリューム名が同じなので、もし設定できたとしても、Macからみたときに混乱しないでしょうか。

    こういう個人的な質問を個人のブロクでいちいち回答するのは苦痛です。
    私のブログに書いていただくか、メーリングリストに投稿してください。

    • brah より:

      HAT様
      大変失礼しました。ご不快に感じさせてしまい申し訳ありません。
      試してみて以降質問は貴殿のブログで質問させていただきます。

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

*

内容に問題なければ、下記の「コメント送信」ボタンを押してください。