OS XとLinuxで日本語名のファイルを共有する
OSXが NFS上の濁点/半濁点のファイル開けない問題、結局サーバにNetatalk入れてAFPで接続したら解決した
— kirine@HYLOGICS (@kirinetter) 2015, 10月 7
経緯
普段はNFSでMacBookProとLinuxサーバ間でファイルの受け渡しをしているものの、最近録画した動画ファイルを観ようとするとファイルが開けないことが多発しており頭を抱えていました。多分ファイル名が駄目だということはわかるけど、幾つか開けるファイルもあるので全角スペースやマルチバイト、機種依存文字が問題なわけでもなさそうだし……。
少し調べてみたところ、ファイル名に日本語が使用されている場合に濁点/半濁点が含まれているとアプリケーションから開くことができないのが原因でした。こんなんわからんわー!
ちなみにこれはSMB接続でも同じらしいです(未確認)
AFP(名前だけは知ってるけど使ったことない)で接続すれば多分解決するんじゃないか、と思ったのでちょっと弄ってみました。
要件
- AFPでファイル共有するためにNetatalkを使う
- TimeMachineの設定は個別に環境があるので今回は見送り
作業手順
Package
CentOS6ならepelにNetatalk 2.2.0のRPMがあります。
例によってかなり古いバージョンですが、最新版*1を使いたい場合は自前で頑張りましょう。メンテが面倒臭いので今回はこのままRPMで導入していきます。
# yum info netatalk Loaded plugins: fastestmirror, priorities, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: ftp.tsukuba.wide.ad.jp * epel: ftp.kddilabs.jp * extras: ftp.tsukuba.wide.ad.jp * updates: ftp.tsukuba.wide.ad.jp Installed Packages Name : netatalk Arch : x86_64 Epoch : 4 Version : 2.2.0 Release : 2.el6 Size : 2.3 M Repo : installed From repo : epel Summary : AppleTalk networking programs URL : http://netatalk.sourceforge.net/ License : GPLv2+ Description : This package enables Linux to talk to Macintosh computers via the : AppleTalk networking protocol. It includes a daemon to allow Linux : to act as a file server over EtherTalk or IP for Mac's.
install
yum install netatalk
もしまだepelを導入していないなら上記の前にepel-release
をいれておくこと
確認
# service netatalk status atalkd は停止しています papd は停止しています timelord は停止しています a2boot は停止しています cnid_metad は停止しています afpd は停止しています
起動
# service netatalk start Starting Netatalk services: Starting cnid_metad: [ OK ] Starting afpd: [ OK ]
稼働確認
# service netatalk status atalkd は停止しています papd は停止しています timelord は停止しています a2boot は停止しています cnid_metad (pid 23762) を実行中... afpd (pid 23766) を実行中...
afpdが動いていればOK
接続試験
- Finderを開く
- メニューの「移動」 -> 「サーバへ接続」
- サーバ名もしくはIPアドレスを入力
- ユーザ名とパスワードを入力
自動起動設定
接続に問題がなければ自動起動をONにしておきます。
# chkconfig --list netatalk # chkconfig netatalk on # chkconfig --list netatalk
余談1
ちょっと触ってみた感じでは
- デフォルトでは$HOMEを開く
- シンボリックリンクは開けない(っぽい)
afpdの設定を変えることで共有ディレクトリは変更できるみたいだけど設定調べるのが面倒だったので今回はAFP用のユーザを作って共有ディレクトリを$HOMEに設定することで対応しました。
# useradd afpuser -d /data/ useradd: warning: the home directory already exists. Not copying any file from skel directory into it.
余談2
問題なくファイルは開けるようになりました。
ちなみにFLVで動画を再生すると冒頭でファイル名が表示されるんだけど、濁点が分解されて 「アイドルマスター シンデレラガールズ」が「アイト゛ルマスター シンテ゛レラカ゛ールス゛」になったのが本作業のハイライトです。*2