![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7y3ghQ8i55xWeC_fWiqLvO-JX_MCwXuD1HJHAp8WdFuB0f9AY5W0gr8ms0UnuVt30ccGnP_qVtyi2f4V36H4h353A46vBN4Q-aq2ActKBDCzXjhnPu7ax-5zCprwVbRv5PBM0WM14kQU/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2019-07-31+18.46.51.png)
2,3個ぐらいならいいのですが、多くなってくるとこれをいちいち GUI で取り除くなんて面倒なことはやっていられません。
筆者も 40個ほどの USBメモリについて依頼されて2,3しましたが飽きました (^^;
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM1LIgcWjTlfdrFoVVkpJbhHxYhqhkKyMe4jx5UM9ttlnTJLkCO6Spn8T6cupBh7OKmOrnUSKwrswEpZ-I4imXor8KxwkQBJpZHGXVBj-iP4aX0U-ZnKJOVAZYq7fuszrv_GqTPfe8ve0/s320/th_IMG_6332.jpg)
上記で20個ほどです。
こういうときにはシェルスクリプトですよね!
1. USB メモリにデータをコピー
2. 不要なフォルダやファイルは削除する
3. すべての処理が終わったら、USBメモリを取り外し可能な状態にする
これが自動化できたら便利です。
これについて簡易的なものを作成したので備忘録がてら(また使うかもしれないので)載せておきます。
USB.sh (sh シェルスクリプト)
ーーー#!/bin/sh export USB_DIR="/Volumes/hogehoge/" export USB_SRC="$HOME/Desktop/USB/" if [ ! -d "$USB_DIR" ]; then echo "Cannot find out USB MEMORY". exit fi if [ ! -d "$USB_SRC" ]; then echo "Cannot find out the source data". exit fi sudo mdutil -i off "$USB_DIR" rsync -av "$USB_SRC" "$USB_DIR" --delete find "$USB_DIR" \( -name '.DS_Store' -o -name '._*' -o -name '.apdisk' -o -name 'Thumbs.db' -o -name 'Desktop.ini' \) -delete -print rm -rf "$USB_DIR"/.fseventsd rm -rf "$USB_DIR"/.Spotlight-V100 rm -rf "$USB_DIR"/.Trashes ls -lga "$USB_DIR" sync sleep 1 sudo umount $USB_DIRーーー
hogehoge の部分に、USBメモリとして認識するラベル名を入れます。同じUSBメモリなら同じ名前でしょう。違うなら、ここはコマンドラインから入力するように改変が必要ですね。
USBの部分は、コピー元のフォルダです。ここではデスクトップのUSBフォルダにしてます。
大まかな流れ
1. 「ターミナル」アプリに対して「フルディスクアクセス」権限を一時的に付与します。
システム環境設定 > セキュリティとプライバシー > プライバシー > フルディスクアクセス に追加
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBu-jOppN9cyT-lMqJbH8J9MJj09Q_AIt3zPBLwdVNuo1lksgI41Q4l52HmYVTp-WnLhTwmWMgaADUO6mlVd-uN81-NuWR7NttteBT1L1Zs7l0qp-TCi8zENNxRzmM0ahbXHfMILERMK0/s640/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2019-07-31+18.44.33.png)
これを忘れると、.Spotlight-V100 などシステムが生成するフォルダやファイルを消そうとすると、権限がないとエラーがでます。ただフル権限を与えてしまうものなので、使い終わったら権限を剥奪しておくのがよいです。
2. ターミナルより、USB.sh (今回はその名前で保存した)を実行します。
sh ~/Desktop/USB.sh
とか(デスクトップに保存したなら)。
3. USBメモリに対する Spotlight 検索インデックス作成をOFFにします。
4. コピー先とコピー元に、準備したフォルダがあるかどうか確認します。なければ終了
5. データを rsync コマンドでコピーします。コピー先にあるデータは全部消します。
6. 不要なファイルやフォルダを削除します。
7. USBメモリのトップのファイル一覧を表示してから、1秒待って、USBメモリを取り外します。
あまり速く取り外すと、Busy とかいって取り出せないこともあるので少しまってみるということです。
これで 100や200個ぐらいなら耐えることができるでしょう。
注意
export USB_DIR="/Volumes/hogehoge/"
の保存先をうっかり / とか $HOME とかにすると悲劇になるので、そこは十分に注意する必要があります。ユーザーフォルダやシステムフォルダのうち消せるものは全部消しますしね。そのあたりは備忘録として残しているだけなので、消えても筆者は責任を負いません。