旧NAS(Network Attached Storage)から新NASへデータを移行する際に発生するMac特有の不要メタ情報ファイル(.AppleDouble、.DS_Store、._*)を、一括削除して移行トラブルを防ぐ方法を、公式仕様・実体験・Windows PowerShellスクリプト付きで完全解説します。
NASの引っ越しはrsyncやエクスプローラで済むと思いきや、Macで作成されたメタ情報ファイルが大量に邪魔をして先に進まない……そんな経験はありませんか。
私は旧NASから新NASへ移行する際に、.AppleDouble、.DS_Store、._* が累計26万件以上あって移行が止まり、深夜までの試行錯誤が続きました。
この記事ではその実体験から得たベストな対策を、初心者でも再現可能な形でまとめています。公式根拠も引用するので AdSense 審査・Google SEO 両面で高評価が狙えます。
NAS移行で発生する問題と原因
Mac が生成する不要ファイルがネットワーク共有上で大量に増殖し、NAS へのコピーや移行の際にエラーや遅延が発生します。
NASでエラーが発生する典型例
Macの不要ファイルが原因でファイル移動・コピーが途中で止まります。
MacではFinderやSpotlightなどの機能により、元ファイルに対するメタ情報が補助ファイルとして生成されます。
これが Windows / Linux / NASの共有フォルダにコピーされると、権限やファイル名の制限に抵触し、移行作業が停止することがあります。特に.AppleDoubleディレクトリは止まります。
Apple公式
https://support.apple.com/guide/mac-help/what-is-a-ds-store-file-mchlp2239/mac
Mac が生成する不要ファイルとは
不要ファイルには主に .DS_Store、.AppleDouble、._* があり、これらはNAS移行時に不要です。
- .DS_Store — Finder 表示情報を保存するファイル(公式根拠)
Appleサポート: https://support.apple.com/guide/mac-help/what-is-a-ds-store-file-mchlp2239/mac - .AppleDouble — 元ファイルのリソースフォークやメタ情報を格納するディレクトリ
- ._* — 個別ファイルの付帯情報
これらは macOS のファイルシステム(APFS / HFS Plus)では役割がありますが、NAS 上では不要かつ邪魔になります。
削除前の事前設定:.DS_Store を抑制する方法
macOSではネットワーク共有上に.DS_Storeを作成しない設定に変更できます。
以下のコマンドはApple公式でも紹介される抑制方法で、ネットワークボリューム上に.DS_Storeが生成されなくなります。
- 実行方法(Mac ターミナル)
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE
killall Finder
これにより新規 .DS_Storeファイルの生成を大幅に抑制できます。
元に戻したい場合は次のように打ちます。
defaults delete com.apple.desktopservices DSDontWriteNetworkStores
killall Finder
PowerShell で不要ファイルを一括削除する方法
Windows側から爆発的に増えた不要ファイルを高速で削除できます。
以下はWindows PowerShellスクリプトです。NASを移行前に実行することでトラブルを未然に防ぎます。
Windows PowerShellスクリプト。ZドライブがNASの共有フォルダの場合で、Zドライブ以下全てをスキャン対象にするという意味です。
$root = "Z:\"
Write-Host "Counting GOMI files..."
$appleDoubleDirs = Get-ChildItem $root -Recurse -Force -Directory -Filter ".AppleDouble"
$dsStoreFiles = Get-ChildItem $root -Recurse -Force -File -Filter ".DS_Store"
$dotUnderscore = Get-ChildItem $root -Recurse -Force -File -Filter "._*"
Write-Host "Found .AppleDouble dirs:" $appleDoubleDirs.Count
Write-Host "Found .DS_Store files:" $dsStoreFiles.Count
Write-Host "Found ._* files:" $dotUnderscore.Count
Write-Host "Deleting .AppleDouble directories..."
$appleDoubleDirs | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
Write-Host "Deleting .DS_Store files..."
$dsStoreFiles | Remove-Item -Force -ErrorAction SilentlyContinue
Write-Host "Deleting ._* files..."
$dotUnderscore | Remove-Item -Force -ErrorAction SilentlyContinue
Write-Host "GOMI was deleted. Congratulations!!"
このスクリプトは「.AppleDouble」「.DS_Store」「._*」を一括で削除します、という内容です。量が多くても数十分から数時間で終わります。
zshでMac上で削除する方法
Mac単体で完結させたい場合は、こちらのzshスクリプトを利用できます。zshスクリプトを走らせる窓とスリープモードにさせない窓の2窓を開いておきます。
まずはスクリプトを走らせる方のnanoでzshスクリプトを書き込みます。
nano delete_GOMI_files.sh
ROOT=”/Volumes/YourMountPoint”の部分を”NASをマウントしている場所”に書き換えてください。
zshスクリプト。nanoで書き込みます。
#!/bin/zsh
ROOT="/Volumes/YourMountPoint"
echo "Deleting .AppleDouble directories..."
find "$ROOT" -xdev -type d -name ".AppleDouble" -exec rm -rf {} +
echo "Deleting .DS_Store and ._* files..."
find "$ROOT" -xdev -type f \( -name ".DS_Store" -o -name "._*" \) -exec rm -f {} +
echo "Removal finished."
nanoでの記述が終わったら、CTRL+Oで保存、CTRL+Xで終了します。その後できあがったdelete_mac_gomifile.shに権限を付与します。
chmod +x delete_GOMI_files.sh.sh
権限の付与が終わったら、今度こそ実行します。結構時間がかかるため、気長に待ってください。
スリープモードになるとスクリプトが止まってしまうため、もう一つの窓に次の一文を実行しておいてください。
caffeinate -i
Macだってスリープしそうなときはカフェインを摂るんです。
これで放っておけば不要ファイルを確実に削除できます。
削除処理でよくある失敗と対処法
大量ファイル削除では途中停止に見える現象がありますが、正しく待てば完了します。
処理が止まって見える(I/O 待ち)
大量ファイル削除中はNASとのI/O待ちで一時停止のように見えることがあります。
実体験として、数十万ファイルを削除中に5 分〜15 分ほど動作が止まったように見えて、フリーズかと思い焦りました。これはI/Oのバックグラウンド処理であり正常です。
権限エラーが出る
NASのアクセス権限設定を見直す必要があります。
NAS側のSMB 共有権限を確認し、Windows PowerShell またはMac zshから書き込み権限があるユーザーで実行してください。
なぜこれで移行が成功するのか(技術的背景)
不要ファイルはmacOS固有であり、NASでは意味がなく、削除しても安全です。
Appleの仕様として、FinderやFinderサービス情報はHFS+やAPFSのファイルシステム上で意味があります。しかしNASのSMB / AFP / NFSでは不要情報として扱われます。むしろ邪魔と判断されます。
公式ドキュメントでも、.DS_StoreやFinder情報はローカルファイルシステム向けとされています。
FAQ
- QNAS移行時の.DS_Storeは削除しても大丈夫ですか?
- A
大丈夫です。Finderの表示情報なので、NAS移行では影響ありません。
- Q削除してもまた増えますか?
- A
増えます。Macから書き込む場合はどうしても再生成されます。移行前に削除し、普段はWindowsからの管理をすることをお勧めします。
- QWindows PowerShellでエラーが出ます
- A
エラーの番号がわからないので何とも言えませんが、管理者権限でWindows PowerShellを実行して、NASのSMB共有権限も確認してください。
まとめ
Mac特有の不要ファイルはNAS移行の大きな障害になりますが、適切な削除手段を使えば安全に一括削除できます。
大量削除にはWindows PowerShellやzshスクリプトが効果的で、処理途中で一時停止して見える現象もI/O待ちと理解すれば安心です。また、この記事の手順で問題なく移行できるはずです。


コメント