読者です 読者をやめる 読者になる 読者になる

HYLOGICS

今後は各分室にコンテンツを移して、ここは雑記や暮らしを中心としたライフログ的な何かにしていく予定です。

OS XとLinuxで日本語名のファイルを共有する

f:id:kirine:20151008110458p:plain

経緯

普段はNFSでMacBookProとLinuxサーバ間でファイルの受け渡しをしているものの、最近録画した動画ファイルを観ようとするとファイルが開けないことが多発しており頭を抱えていました。多分ファイル名が駄目だということはわかるけど、幾つか開けるファイルもあるので全角スペースやマルチバイト、機種依存文字が問題なわけでもなさそうだし……。

f:id:kirine:20151008103833p:plain

少し調べてみたところ、ファイル名に日本語が使用されている場合に濁点/半濁点が含まれているとアプリケーションから開くことができないのが原因でした。こんなんわからんわー!

ちなみにこれは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

接続試験

  1. Finderを開く
  2. メニューの「移動」 -> 「サーバへ接続」
  3. サーバ名もしくはIPアドレスを入力
  4. ユーザ名とパスワードを入力

自動起動設定

接続に問題がなければ自動起動をONにしておきます。

# chkconfig --list netatalk
# chkconfig netatalk on
# chkconfig --list netatalk

余談1

ちょっと触ってみた感じでは

  1. デフォルトでは$HOMEを開く
  2. シンボリックリンクは開けない(っぽい)

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

f:id:kirine:20151008102814p:plain

*1:現時点での最新版は3.1.7です。

*2:Finder上ではちゃんと「アイドルマスター シンデレラガールズ」になってるので実害はないです。