9
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WSL同士のファイル転送

Posted at

解決したい問題点:WSL同士でファイル転送をしたい

ついにWSLにもUbuntu 18.04が来ました。
思ったよりも早くきて、びっくりしつつ、とても喜んでいます。

ところが!
このUbuntu 18.04は新しいWindowsStore Appとして配布されました。
そこで起こるのが、旧Ubuntuアプリから新Ubuntu1804アプリへの環境移行。

私は開発環境のセットアップをgitレポジトリ化&スクリプト化してあるため、こちらはあまり問題になりませんでした。
しかし、今まで扱っていたファイルをどうするのかという問題が残りました。

問題解決の大変さ:WSLのファイルシステムの特殊さ

WSLはファイルシステムが特殊で、Windows10のファイルパスを使ってファイルのやりとりをすると問題が起こります。

Linuxから見たWindowsでのファイル権限

WSLはWindows10のファイルシステムにアクセスできます。
しかし、Windows10を経由すると、すべてのファイルに実行権限が付与されてしまいます。
つまり、WSL1からWSL2にファイルをコピーするのに「WSL1→Windows 10→WSL2」と経由すると、すべてのファイルに実行権限がついてしまいます。
1つ2つのファイルならいいですが、大量になると、権限の復旧が面倒です。

Windows10から見たWSLのファイルパス

WSLのファイルは、Windowsでの実体がひじょうに深いところにあります。
ファイルパスは以下です。

Ubuntuの場合
%LOCALAPPDATA%\Packages\CanocialGroupLimited.UbuntuonWindows_"何か"\LocalState\rootfs
Ubuntu1804の場合
%LOCALAPPDATA%\Packages\CanocialGroupLimited.Ubuntu18.04onWindows_"何か"\LocalState\rootfs

しかも、Windows10からWSLのファイルを読めますが書き込みはできません。
WSLのファイルを変更をすると、WSLから不可視なファイルとなってしまいます。1

また前述の実行権限の都合により、Ubuntu1804から/mnt/c経由でUbuntuのファイルにアクセスはできますが、やはり実行権限がついてしまいます。

解決策:そうだ、sshしよう

Windowsを経由せず、WSLのLinux同士で通信すれば解決できます。
他のLinuxサーバがあればそこを経由でもいいですが、ネットワークを経由したくありません。
そこで、新たなWSLで可能になった、WSLでsshdを立てることにしました。

Ubuntu1804でsshdの設定をする

一時的に、パスワードでの認証をオンにします。
sshdを使い続けるのであれば、RSA認証にあとで変えましょう。

/etc/ssh/sshd_config
PasswordAuthentication yes

なお、参考文献にある以下サービスの停止は必要ありませんでした。

  • SSH Server Broker
  • SSH Server Proxy

また、以下のsshdのUsePrivilegeSeparation noの設定も必要ありませんでした。

Ubuntu1804でsshdを起動する

Ubuntuのsshdを以下のコマンドで起動します。

# service ssh start

Ubuntuからアクセスする

ここまでくれば、sshもscpも使えます。
ダイレクトにコピーすることができました。

$ scp -r [コピーしたいフォルダ] [Ubuntu1804のユーザ名]@localhost:[コピー先]

Ubuntu1804のsshdを止める

使わないものは止めておきましょう。

# service ssh stop

まとめ

  • WSL間のファイルのやりとりはダイレクトで行おう
  • WSLでは、親であるWindows10を経由するとファイルのあれこれに面倒が増える

参考文献

  1. Windows版Source Treeがひじょうに便利なのですが、この制約のせいでWSL内のgitレポジトリを扱うことができません。

9
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?