netatalk3.1.11&FreeBSD11.1/zfsのEAはいけてない

2019/11/7 追記

netatalk3.1.12&FreeBSD12.0では、3番目以降のEAが「読めたり、読めなかったり」します。ワケワカラン…。


プレビューやらXcodeやらのApple謹製アプリで上書き保存がエラーになる件、ea=auto|sys|sambaだとやっぱりnetatalk壊れてました。

FreeBSD/zfsにおける、netatalkのea=auto|sys|sambaについてまとめると…、

  • Apple謹製アプリの保存時、3つのEAが付けられる。
  • Netatalkは自身が扱うmeta情報としてFinderinfo?をorg.netatalk.MetadataとしてEAに保存する。
  • macOSからの書込みだと全てのEAはきちんと保存(FreeBSD内で確認)される。
  • macOSで読み出す時に「3番目以降のEA」が読めない。
  • EAにはファイルシステムとして格納順があるが、netatalkが保存するとランダム?な順で保存される。
  • 1番目/2番目にどのEAが格納されるかによって、上書き保存がエラーになったりならなかったりする。
  • ea=adでは問題無く全てのEAが読める。(finderinfoだけは、なぜかorg.netatalk.Metadataとして勝手にEAに保存される。)

元ファイルのEA

com.apple.lastuseddate#PS	  16
com.apple.metadata:_kMDItemUserTags	  42
com.apple.metadata:kMDLabel_m7fhm3f5avipv53sr4adlox73i	  89

↑をnetatalkへコピーしたファイルのEA(FreeBSD内からlsextattr)↓

com.apple.lastuseddate#PS
org.netatalk.Metadata
com.apple.metadata:_kMDItemUserTags
com.apple.metadata:kMDLabel_m7fhm3f5avipv53sr4adlox73i

↑をnetatalk経由でmacOSから見えるEA(ls -l@)↓

com.apple.lastuseddate#PS	  16
com.apple.metadata:_kMDItemUserTags	  42
com.apple.metadata:kMDLabe	  -1
_m7fhm3f5avipv53sr4adlox73i	  -1

他のOSやUFSは知らんけど、FreeBSD/zfsでnetatalkでマトモにEA扱うには._ファイルばらまきながらea=adで運用するしかないっぽい。

ただ制限として、dbdコマンドが使えなくなります。afp.confの内容見ずに、FilesystemがEA対応なら問答無用にAppleDoubleをEAに変換してぶち込んでしまいます。

ea=adとしても、org.netatalk.Metadataが勝手にEAに保存される件といい、EA対応のFilesystem上でのea=adのテストが十分に行われていないっぽい感じ。一方でFreeBSD/zfs側は、EAのon/offを制御出来ないというね…。

2017/12/20追記:

ea=adで使ってると,logに下記のようなエラーが大量に…。どないせーっちゅうねん。

afpd[xxx] {ad_open.c:547} (warn:ad): ad_valid_header_osx("/hoge/._hoge::EA::com.apple.quarantine"): not an adouble:osx file
カテゴリー: 未分類 タグ: , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です