主にInDesignによる新聞組版Tips中心です。Mac使いですが業務はWin多め。Win DTP Tipsを増やしたい

Windowsから見えるMacの不可視ファイルを一括削除

※〜MacOS 10.6〜10.14且つHFS+(Mac OS拡張ジャーナリング1 限定。10.15及びAPFSは手元に環境がない為、カスを吐くのか現時点では検証できません(2020.10)

※当方紙媒体DTP戦士なため、基本的に最新OSの運用は致しません。ご了承下さい。

Automator内の説明・記述を再度修正しました orz(2020.11.3)
サポートのHARMAN移管に伴い、Adobe AIR配布Link先を修正しました(2021.3.9)


NASもしくはUSBメモリーなどで、Windowsと直接生データの遣り取りをしている方。

f:id:chocomarine:20201013114027j:plain
Macからは見えない、先頭が「._」で始まる謎のデータが発生

WindowsLinux側からはこういったデータが見えていて、知らずに相手方(もしくはサーバ管理者)に迷惑をかけているかもしれません。事前にMac側から消しておいてあげましょう。まあ目障りなだけで、然程実害ないんですが。 ただプログラムがコレも数としてカウントしてしまうので、困る事はあります

MacからのNAS(smb)接続でデータコピーや移動に失敗したり、互換USBメモリFAT32exFATボリューム)のイジェクトに失敗するのは、この見えないカスが影響している場合があります。試してみて下さい。

これらは俗にAppleDouble 2(のカケラ)、リソースフォークなどと呼ばれます。面倒なので説明はWiki先生に任せて← まず結論から、削除方法。


NAS or 互換USBメモリーに上げた後のフォルダに対して処理して下さい。 それ以前、リソースフォーク生成前には意味ありません。発生条件は下に記載します

MacOS(~10.14)側から削除

Automatorに登録

  1. Automatorを起動、新規「サービス」選択
    f:id:chocomarine:20201028182110j:plain

  2. 検索「シェル」→ 「シェルスクリプトを実行」をつかみ、右へドラッグ
    f:id:chocomarine:20201024120039j:plain

  3. 次の選択項目を受け取る:フォルダ
    検索対象:Finder
    シェル:/bin/bash
    入力の引き渡し方法:引数として
    f:id:chocomarine:20201028182445j:plain

  4. 記述「do ~ done」の間に、下記コマンドを入力

     find "$f" \( -name '.DS_Store' -or -name '._*' -or -name '.Bridge*' -or -name 'Thumbs.db' \) -delete -print
    

    f:id:chocomarine:20201028182044j:plain

  5. 検索窓に「リスト」→ 出てきた「リストから選択」を右下へドラッグ→ メッセージに文言を入力(削除されたファイル)
    f:id:chocomarine:20201104154650j:plain
    リストから選択→ シェルスクリプトの下へドラッグ

  6. 名前をつけて保存。
    f:id:chocomarine:20201024132006j:plain

    ここに保存される(ユーザ→ [ユーザー名]→ ライブラリ→ Services
    f:id:chocomarine:20201024132031j:plain

    これで登録完了。


削除の実行

  1. 対象フォルダを右クリック→ サービス
    f:id:chocomarine:20201024132356j:plain
    先ほど作った設定を選択

  2. find( )の条件(名称指定)で見つかった削除リストが表示される
    f:id:chocomarine:20201024132600j:plain
    ※このウインドウが出る前にもうdelete済みなので、ここで実行・拒否を選びたい場合は構造と記述を少し変えないといけません(面倒臭い)← 

  3. →OKで閉じる。


ターミナルからの直接実行も可能ですが、パス指定の楽な乙女ちゃんの方が断然お勧め。

シェルスクリプト部分は、ここまで冗長でない

dot_clean --keep=dotbar "$f"

※通常ターミナルでは最後を対象フルパス or .(ピリオド=今いる場所) と書きますが、Automatorでは最初に for f in "$@"と変数宣言する様です

とするやり方もありますが、どうもデータフォーク側にも影響があるようで、新規保存し直すまで一部アプリでサムネイルが見えなくなります。やめておいた方が無難。

f:id:chocomarine:20201026135256j:plain
ドキュメントアイコンが半透明に

f:id:chocomarine:20201026135338j:plain
Bridgeウインドウ内で見えない

カスどもが確実に消えたかどうかMac OS GUI上から視認する事はできないので、ターミナルから

find [フォルダをターミナルウィンドウにドロップ] \( -name '.*' -or -name 'Thumbs.db' \) -print

→enter で確認してみましょう。 ※スクエアブラケット[]はトル

※フルパスの中にスペースがある場合、フォルダードロップではなく、
対象を右クリック→ パスをコピー→ 記述「find(半角スペース)」の後にカーソルを立て、(ターミナルメニュー)編集→「テキストをエスケープしてペースト」
で指定して下さい。

・・・USBメモリーの

.fseventsd .Spotlight-V100 .Trashes

を消していないのは分かると思いますが、これらは互換ドライブがマウントしただけでMacOSが生成する性質なためMac側から消す意味がなく、Windows上で手動削除するしかありません ←

この3つは削除してなんの問題もありませんが、Macからマウントするたびに復活します。


デキる人であれば、cronKeyboard Maestro[^3] などで自動削除スケジュールが作れると思いますが、後述の様にclientでの大量処理は負荷がキツい以上、狭い範囲の固定ディレクトリに対してのスケジュールでは、あまり意味ないのではないかと。そういう処理はサーバ側に組ませる方がいいと思います。

[^3]: Mac用キーボードユーティリティ。有償 Keyboard Maestro


ネット上でこの削除方法を探すと、'.AppleDouble' 指定のみのものをよく見ますが、複数の環境で試していずれも失敗しました。 ※10.10、10.14で検証

例え属性指定できたとしても、消さない方がいい種類のある可能性もあるので、愚直に名称でひとつひとつ指定した方がいいのではないかなと、私は思ってます。

因みにNASの場合、AFP(Apple Filing Protocol)[^4] 接続する事でAppleDoubleリソースフォーク生成(分離)は回避できます。afp対応しないnetatalk 3.x[^5] 以外のNASでは不可。NAS以外の事情は知りません

将来的にAppleが悔い改めデータフォーマットを見直す時が来れば、これらは解消するのかもしれません。 apfsはどうなってますのやろ

[^4]: AFP Wikipedia

[^5]: netatalk Wikipedia


「ネットワークボリューム・USBメモリーに最初から.DS_Storeを作らない方法(コマンド)」は広く紹介されていますが(※Macボリューム上は不可能)、AppleDouble(リソースフォーク)及び「. fseventsd .Spotlight-V100 .Trashes」を作らない方法というのは、理論上不可能。ですよね


Windowsから削除

コマンドプロントから「.AppleDouble」で削除するエントリーを見かけましたが、私が検証した限りではPowerShellコマンドプロンプトは、例え名称決め打ち指定であっても、CUI上でApple独自のリソースフォークを認識できない様です。何かしらやりようはあるんでしょうか。

GUI側ではしっかり選択・deleteできるクセに、、

Mac OSと同様に他言語からの削除はできますが、まだアプリ化する能力が私にはない為、今回は断念。  ESTKだとドキュメント・フォルダ両方削除できる再帰処理がちっと面倒だった← のもあるし、わざわざESTK起動してパスを選択しにいって、、あまり効率的ではありませんよね

なので、Windowsではカス削除くんを利用するのが一番手っ取り早いです。

カス削除くんのインストール・実行

カス削除くん

Adobe AIR(Runtime)必須。

※カス削除くん公式内のAdobe AIRはリンク切れになっています。
Adobe AIRは、2021.1よりサポート及び開発をHARMANに移管しました。2021.3.8現在

f:id:chocomarine:20201026132517j:plain
フォルダをドロップ→ カスファイルを削除する

カス削除くんMacでは、AppleDoubleカスを消す事はできませんMacからは、先に説明したAutomatorかターミナルコマンドを。

更に、ご覧になって分かるように.fseventsd .Spotlight-V100 .Trashesには対応していません←←

この3つは手動で削除して下さい、、


不可視ファイル類が発生する条件:


注意事項(共通)

  • ボリューム丸ごと突っ込まない 数が多いと処理しきれません

  • ボリューム直下・ユーザーディレクトリ直下を丸ごと突っ込まない 必須不可視データまで消してしまう危険が(あるかもしれない)


不可視ファイルの種類(削除可)

  • .DS_Store
    Winのdesktop.iniと同等。手動配置の位置、ウインドウサイズ、アイコンサイズ等、フォルダオプション情報を記録。Macデスクトップ上以外は消してOK

  • ._.DS_Store
    .DS_Store自体をMacOS側から他へコピーした事で、そのリソースフォークとして作られたもの(多分)

  • .fseventsd
    MacOSのFile System Event log。ファイルが作成、変更、または削除されるたびに通知され、実行中のMacプログラムが情報を知るために参照する

  • .Spotlight-V100
    スポットライトインデックス(database)
    MacOSが検索するためのインデックスを作成する …そういえば、これを今後作成しないターミナルコマンドが確かありましたよね

  • .Trashes
    MacOS固有の「仮ゴミ箱」システム。

  • Thumbs.db
    Windows上のアイコンプレビューを高速化するためのキャッシュ。

捨てない方がいい不可視ファイル

  • .localized
    (カラム・アイコン表示以外で)フォルダ・データ名の日本語表示に必要

  • デスクトップ上の.DS_Store
    アイコン表示での配置・アイコン等の情報が初期化されます

  • Windowsデスクトップ上のdesktop.ini
    Winのデスクトップ情報。表示オプション→ 表示→ 保護されたオペレーティングシステムファイルを表示しない→ OFF で見える(非推奨)


最後に

何か間違えてたら、ご指摘お願いします←

ちゃんとエディタでチェックしてないので、脚注3以降の表示がおかしい・・(泣

11.30 追記

次期MacOSではAFPを切り捨て、SMB接続に絞る様ですね。

カス問題も、そちらに合う様にデータ構造が改良されるのでしょう。まだまだ読めませんが。


  1. ディスクユーティリティでフォーマットできるファイル・システム・フォーマット Appleサポート

  2. AppleSingleとAppleDouble Wikipedia