💭

Dropbox をWSL2環境で利用するためのメモ書き

に公開

WSL2のUbuntu環境からWindowsの領域 /mnt/c/Users/XXX/Dropbox を読み書きすることはできるが、Dropboxの同期中は permission denied でアクセスが失敗したり、git の index lock が変な残り方をしておかしくなったり、ファイルの更新でトリガーされる処理がうまくいかなかったりと色々不都合がある。

というわけで、WSL2の上で直接Dropboxを動作させることを試してみる。

インストール

https://www.dropbox.com/install-linux

下記のコマンドで ~/.dropbox 以下にインストールされる。

cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -

下記のコマンドで起動する。

~/.dropbox-dist/dropboxd

初回起動時には認証のためにブラウザが開くので、ログインして認証情報を紐付ける。

下記コマンドで管理用のpythonスクリプトもインストールする。

wget -O dropbox.py "http://www.dropbox.com/download?dl=packages/dropbox.py"
chmod a+x dropbox.py
sudo mv dropbox.py /usr/local/bin

systemd の自動起動設定を行う

WSL2でsystemdが利用できるようにするには、 /etc/wsl.conf[boot] セクションで、systemd=true を設定してWSL2を再起動すればOK。

下記のコマンドでsystemdのserviceファイルを作成する。

sudo tee /lib/systemd/system/dropbox.service <<EOS
[Unit]
Description=Dropbox Daemon

[Service]
User=$USER
WorkingDirectory=/home/$USER/
Type=forking
ExecStart=python3 /usr/local/bin/dropbox.py start
Restart=always

[Install]
WantedBy=multi-user.target
EOS

下記コマンドでdropboxのサービスを有効化

sudo systemctl daemon-reload
sudo systemctl enable dropbox
sudo systemctl start dropbox

動作確認

sudo systemctl status dropbox

同期の除外設定

WSL2では特定のディレクトリ以外はほぼ編集することがないので、必要のないものは同期対象から除外する。

dropbox.py exclude add DIR1 DIR2 ...

で同期対象から除外できる。除外しているものの一覧は

dropbox.py exclude list

で確認できる。

Discussion