5
3

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 1 year has passed since last update.

WSL2(Ubuntu)上でDropboxを使う方法

Posted at

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
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の名前を指定してください

dropbox.service
[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の有用性がかなり上がってきているなと言う印象ですね。無限の可能性を感じてしまいます。

5
3
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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?