2020/10/10

macで右クリックからNTFSを書き込み可能に

 AutomatorのQuick Action(サービス)を使います。(色々確認はしましたが、どんな環境でもどんなボリューム名に対してもうまく動くかは自信がありません、、、自分の環境では動きました)


準備

私の環境は、macOS 10.14.5とmacOS 10.13.6です。 準備作業中に再起動が必要かもしれません(?)
  1. Fuse for macOS をインストール
  2. Homebrewを使って、$ brew install ntfs-3g
  3. (FUSEのライセンスの関係でhomebrewからntfs-3gがdeprecatedされ、例えばこの代替手段を使う必要があるかも)
  4. システム環境設定 -> 通知 -> Script Editor にて、バナー等を選択。(これをしないとAutomatorのサービスの通知が見れない)


Automatorの中身

  • 保存名: Make NTFS Vol Writable
  • Service receives selected folders in any application
  • Run Shell Script
Shell: /bin/bash    Pass input: as arguments
######### get only directory(volume) name from full path #########
vol=$1
vol_name_orig="`echo ${vol} | awk -F "/" '{ print $NF }'`"
df_h_grep=`df -h | grep "$vol_name_orig"`

######### get node name #########
node_name=`echo ${df_h_grep} | awk -F "/" '{ print $3 }'| awk '{ print $1}'`
is_it_ntfs=`diskutil info ${node_name} | grep -c NTFS`
# check vol is NTFS
if [ ${is_it_ntfs} -eq 0 ]; then
	osascript -e 'display notification "The format is not NTFS." with title "Make NTFS Vol Writable"'
	exit
fi

######### unmount and remount with ntfs-3g #########
diskutil unmount ${node_name}
vol_name=${vol_name_orig//\ /\\\\\ } #replace " " with "\\ " for apple script
osascript -e "do shell script \"mkdir -p /Volumes/$vol_name;/usr/local/bin/ntfs-3g /dev/$node_name /Volumes/$vol_name -olocal -oallow_other -o auto_xattr\" with administrator privileges"


使い方

  1. NTFSボリュームのアイコンを右クリック
  2. Make NTFS Vol Writableを押す("サービス"配下かも)
  3. パスワード入力 or タッチidを使う
  4. 書き込み可能になり、OSXFUSE Volume 0 (ntfs-3g)などという名前で表示される
    (パスは、/Volumes/ボリューム名 となる。)


背景

NTFSのデバイス(disk1s2)を、書き込める状態で/Volumes/foobarにマウントするコマンドは、

$ sudo ntfs-3g /dev/disk1s2 /Volumes/foobar -olocal -oallow_other -o auto_xattr

ですが、長いので右クリックメニューにしました。