JUNのブログ

JUNのブログ

活動記録や技術メモ

Ubuntuマシンから WSL2 にデータを移行する

自作ゲーミングデスクトップPCを組んだので, そっちでも開発できるように開発環境を整えます.

やりたいこととしては以下のとおりです.

  • WSL2で開発したい.
  • 既存のUbuntuを搭載したノートパソコンに入っている作業中のプロジェクトとかのデータをWSL上のファイルシステムにコピーしたい.

OSは本当はWindows11が良かったのですが, まだ自分にはWindows11のアップデートの案内が来ていないのでとりあえずWindows10でやります.

WSL2でUbuntuを動かす

これは簡単です. 以下のマイクロソフトが出してる記事を見ながらやればおk.

docs.microsoft.com

一応Tipsとしては

# copy to clip clipboard
if hash clip.exe 2> /dev/null
then
        alias pbcopy='clip.exe'
else
        alias pbocpy='xsel --clipboard --input'
fi

これは dotfiles みたいなリポジトリ作って, 各OS共通の .zshrc を作ってる人向けですね. WSL2上でしか使わないなら特に必要ないです.

ちなみにこれだけだとVimのヤンクとかうまくWindows側のクリップボードにコピー出来ないのですが, そのあたりは以下のIssueのコメントとか見ると良いかもです.

github.com

既存のUbuntuマシンからファイルをWSLにコピーする.

こっちが今日の本題. 最初はext4(Linuxファイルシステム)の外付けHDDをNTFS(Windowsファイルシステム)に変換するソフトとか使おうかと思っていたが, でもそれだとWSLからのアクセスはどうすれば...とか思っていたが, 同じLANにつないであるマシンならUSBとか経由せずネットワーク上でコピーすればよくね? ってことに気づいた.

今回は rsync というコマンドを使って行う.

以下やり方を書きますがここでは以下のように想定して文章を書いてるので注意して読んでください.

  • ノートパソコン: 元々使っていたUbuntuマシンのこと
  • WSL2: 新しいWindowsパソコンのWSL2のこと

Ubuntu on ノートパソコン の設定

WSL2ではネットワークがWindowsのものと完全に分けられていて, 外部からWSL2にアクセスするのは難しいので今回はWSL2から外部のコンピュータ(Ubuntu on ノートパソコン)にアクセスする形にします.

なので, ノートパソコン側ではSSH接続できるようにSSHサーバーの起動と, 22番ポートを許可します.

$ sudo systemctl start ssh  # SSH起動
$ sufo ufw allow  from <Powershellなどで確認したIPアドレス> to any port 22  # 22番ポートへのアクセスを許可

これでノートパソコン側はWindowsマシンからの22番ポートの接続を許可するようになりました. (<Powershellなどで確認したIPアドレス>ipconfigPowershell に打つと確認できます)

WSL2 の設定

設定というか, こっちはやること簡単で, rsync 使ってノートパソコン側からWSL2にコピーしてくるだけです. 以下のコマンドをWSL2内で実行します.

rsync -avzhr <ノートパソコン側のユーザー名>@<ノートパソコンのIPアドレス>:<ノートパソコン側のコピーしたいディレクトリやファイル> <WSL2のどこにコピーしてほしいか>

各オプションは以下のような意味です.

  • a: ファイルを再帰的にコピーできる&ファイルのパーミッションやタイムスタンプなどを維持する.
  • v: 進捗状況の可視化
  • z: ファイル圧縮して転送
  • h: 人間が読める形で進捗表示する
  • r: 再帰的にコピーする.

例: LAN内のノートパソコン(IP 192.168.50.94)のwork_spaceディレクトリをWSL2にコピーする場合は

rsync -avzhr jun@192.168.50.94:/home/jun/Desktop/work_space ~/

をWSL2で実行すれば良い. そしたら WSL2 内に ~/work_space のような形でコピーされる.

後片付け

ノートパソコン側のポート開きっぱなしになっており, これはよろしくないのでちゃんと使い終わったら閉じましょう.

$ sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22                         ALLOW IN    192.168.50.232            
$ sudo ufw delete 1
Deleting:
 allow from 192.168.50.232 to any port 22
Proceed with operation (y|n)? y
Rule deleted

感想

調べてもいい感じの情報出てこなかったしメモ代わりに書いた.

久しぶりにWindows使ったが, 最近のWindowsは普通に開発できそうでいい感じ. VM使って環境構築してもいいけど, WSL2のほうが軽いし, 問題なければこれでやっていきたいね.

あとは, 自分のdotfilesが整備されてなさすぎて流石にきちんと綺麗にしたい.

github.com

では今日はこのへんで. ではでは~👋👋

おまけ

Powerline フォントのインストール

stackoverflow.com