WSLに何らかのクラウドストレージを同期させたいと思い、Linux CUI環境で利用する手段を公式が用意してくれているDropboxを選択しました。
基本的には以下にある参考記事の通りなんですが、WSLでやるとなると何かと手順が増えるので備忘録を兼ねて記事にしました。
参考記事:Dropbox を Linux (CUI環境)で利用する
前提
WSL自体は現時点(2022/12/16)で最新のバージョン(1.0.3.0)にしています。バージョンが古い場合はwsl --update
してください。
ディストリビューションは Ubuntu 22.04 を使用しています。
動作確認環境の詳細
C:\>wsl --version
WSL バージョン: 1.0.3.0
カーネル バージョン: 5.15.79.1
WSLg バージョン: 1.0.47
--- 以下省略 ---
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.1 LTS
ブラウザのインストール
WSL上のUbuntuからDropboxのアカウントにログインするために何らかのブラウザが必要です。
もうすでにWSLにブラウザがある場合はこのセクションは飛ばしてください。
方法は色々とあると思いますが、今回はMicrosoftのサイトのドキュメントにあったChromeのインストール方法がシンプルかつ分かりやすかったのでそれを採用しました。
cd /tmp
sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt install --fix-broken -y
sudo dpkg -i google-chrome-stable_current_amd64.deb
無事インストールできたら以下のコマンドでChromeが立ち上がるはずです。
google-chrome
最初に起動するとデフォルトのブラウザにするかと聞かれると思うので、そのように設定してください。
Dropbox daemon のインストール
起動させると特定ディレクトリのファイルを同期してくれるDropbox daemonをインストールします。Dropbox公式のものです。
cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -
以下コマンドで起動開始されます。
~/.dropbox-dist/dropboxd
デフォルトのブラウザでDropboxのログインをしていない状態だとブラウザが開いてログインを求められます。
無事ログインできればホームディレクトリに「Dropbox
」というディレクトリが作成されてその中でファイルが同期できているはずです。
Dropbox管理コマンドのインストール
dropboxをCUI環境で使用するのに色々と便利な管理コマンド(dropbox.py)をインストールします。これも公式が出しているやつです。
同期の開始や停止、ステータスの確認、同期対象の除外などができます。
下のコマンドでインストールできます。
wget -O dropbox.py "http://www.dropbox.com/download?dl=packages/dropbox.py"
chmod a+x dropbox.py
↓動作確認
$ ./dropbox.py help
Dropbox command-line interface
commands:
--- 以下省略 ---
Dropboxの自動起動設定
WSLを起動するたびにdropboxを起動させるのは面倒なので、systemd
を用いてDropboxの自動起動設定を行います。
systemdプロセスを使えるようにする
このセクションは少し本題から逸れます。
systemctl
コマンドを実行して以下のようなエラーが返ってくる場合はここで説明する設定を行ってください。問題なく動く場合はスキップしてください。
$ systemctl
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
これを解決する手順はMicrosoft公式にあります。
まず、/etc/
下にwsl.conf
を以下のように作成or編集します。
sudo vim /etc/wsl.conf
[boot]
systemd=true
その後、Ubuntuから一旦抜けて、WSLディストリビューションの再起動を行います。
C:\>wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
C:\>wsl -t Ubuntu
この操作を正しく終了しました。
C:\>wsl -d Ubuntu
これでsystemctl
が使えるようになっているはずです。
自動起動の有効化
dropbox.service
というファイルを設定します。
sudo vi /lib/systemd/system/dropbox.service
<ユーザー名>には現在のlinux userの名前を指定してください
[Unit]
Description=Dropbox Daemon
[Service]
User=<ユーザー名>
WorkingDirectory=/home/<ユーザー名>/
Type=forking
ExecStart=python3 /home/<ユーザー名>/Dropbox/dropbox.py start
Restart=always
[Install]
WantedBy=multi-user.target
以下コマンド有効化、そして起動できます。
sudo systemctl daemon-reload
sudo systemctl enable dropbox
sudo systemctl start dropbox
↓確認
systemctl status dropbox.service
これでWSLが起動すると自動でDropboxの同期を開始してくれるようになっていると思います。
最後に
今年9月にWSLでSystemdのサポートが開始されたりとWSLの有用性がかなり上がってきているなと言う印象ですね。無限の可能性を感じてしまいます。