💭
Dropbox をWSL2環境で利用するためのメモ書き
WSL2のUbuntu環境からWindowsの領域 /mnt/c/Users/XXX/Dropbox を読み書きすることはできるが、Dropboxの同期中は permission denied でアクセスが失敗したり、git の index lock が変な残り方をしておかしくなったり、ファイルの更新でトリガーされる処理がうまくいかなかったりと色々不都合がある。
というわけで、WSL2の上で直接Dropboxを動作させることを試してみる。
インストール
下記のコマンドで ~/.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