長すぎるパスのファイルを「以前のバージョン」から取り出す方法

NTFSが約 32,767 文字という長いパスを受け入れるようになって久しいですが、2022年10月末時点、いまだに Windows のデフォルト設定は長いパスを許容しないままです

learn.microsoft.com

上記の通り、レジストリをいじれば長いパスが取り扱えるようになる「らしい」のですが(未確認です)、レジストリの変更後再起動が必要なため、環境によっては上記対策を取りにくいこともあろうかと思います

また、長くなりすぎたパスへの対応として上位のフォルダ名を短くする、といった対応を取られることもあるかと思いますが残念ながら「以前のバージョン」の環境ではこの対策は不可能です

ここで、Windows が長いパスへ対応しないというなら wsl の Linux 環境から対象ファイルへアクセスしようと考えたとしても、次は wsl から「以前のバージョン」の環境へどうアクセスするか?という課題が立ちふさがります

そこで本記事では wsl の環境で「以前のバージョン」の環境をマウントする方法についてまとめておきたいと思います

「以前のバージョン」の UNC パス

実は Windows エクスプローラーでも以下のパスへアクセスすることで、「以前のバージョン」のタブを経由することなく「以前のバージョン」のファイルへアクセスすることが可能です

\\サーバ名\フォルダ名\@GMT-yyyy.mm.dd-hh.nn.ss

※ yyyy.mm.dd-hh.nn.ss の部分は以前のバージョン作成日時のGMT時間です

wsl で「以前のバージョン」のパスをマウントする

sudo mount -t drvfs '\\サーバ名\フォルダ名\@GMT-yyyy.mm.dd-hh.nn.ss' /mnt/マウントポイントとして作成したフォルダ名

あとは cp 等でコピーするだけ

マウントしてしまえばあとは普通にコピーするだけです