Hotdry.
systems-engineering

Linux 下使用 rclone FUSE 和 systemd 用户服务挂载 Proton Drive,实现可靠后台同步

通过 rclone 将 Proton Drive 挂载到 Linux 本地文件系统,利用 systemd 用户服务实现开机自动挂载、断线自动重连,以及与文件管理器的无缝集成。

Proton Drive 作为注重隐私的云存储服务,支持端到端加密,在 Linux 上通过 rclone 的 FUSE 挂载功能,可以将其像本地磁盘一样使用。结合 systemd 用户服务,还能实现可靠的后台同步、开机自启和断线重挂载,避免手动干预。

为什么选择 rclone + FUSE + systemd?

rclone 支持超过 70 种云存储,包括 Proton Drive(从 v1.65 开始原生支持 protondrive 后端)。FUSE 允许将远程存储挂载为文件系统,支持读写操作。systemd 用户服务(非 root)确保安全运行,支持 Restart=always 自动重启,适用于桌面环境。

优势:

  • 无需 root 权限,用户级挂载。
  • 缓存优化,提升访问速度。
  • 断网重连:服务崩溃或网络中断时自动恢复。
  • 文件管理器集成:Nautilus、Dolphin 等直接浏览。

潜在风险:Proton Drive API 速率限制(建议 poll-interval 1m),认证过期需手动刷新 token。

步骤 1: 安装与配置 rclone

更新系统并安装依赖:

sudo apt update && sudo apt install rclone fuse3  # Ubuntu/Debian
# 或 Fedora: sudo dnf install rclone fuse

配置 Proton Drive 远程:

rclone config
  • n(新建)
  • 名稱:protondrive
  • 存儲類型:protondrive(查詢最新序號,通常 50+)
  • 輸入 Proton 帳戶 email 和 app password(非主密碼,在 Proton 設定生成)
  • 確認並 q 退出。

驗證:

rclone lsd protondrive:

步骤 2: 手動掛載測試

創建掛載點:

mkdir ~/ProtonDrive

最佳掛載命令(優化可靠性和性能):

rclone mount protondrive: ~/ProtonDrive \
  --vfs-cache-mode full \
  --vfs-cache-max-size 1G \
  --dir-cache-time 12h \
  --poll-interval 1m \
  --allow-other \
  --daemon \
  --log-file ~/rclone-proton.log

參數解釋:

  • --vfs-cache-mode full:全緩存,支持寫入和離線操作。
  • --vfs-cache-max-size 1G:緩存上限,避免內存爆炸。
  • --dir-cache-time 12h:目錄緩存 12 小時,減少 API 調用。
  • --poll-interval 1m:每分鐘輪詢變化,平衡速率限制與實時性。
  • --allow-other:允許其他用戶(如文件管理器)訪問(需 fuse.conf 啟用 user_allow_other)。

檢查:

df -h | grep ProtonDrive
ls ~/ProtonDrive

卸載:

fusermount -u ~/ProtonDrive

步骤 3: systemd 用戶服務實現自動化

用戶服務更安全,避免 root。創建單位文件:

mkdir -p ~/.config/systemd/user
nano ~/.config/systemd/user/protondrive-mount.service

內容:

[Unit]
Description=Proton Drive Mount via rclone
After=network-online.target graphical-session.target

[Service]
Type=simple
ExecStart=/usr/bin/rclone mount protondrive: %h/ProtonDrive \
  --vfs-cache-mode full \
  --vfs-cache-max-size 1G \
  --dir-cache-time 12h \
  --poll-interval 1m \
  --allow-other \
  --log-file %h/rclone-proton.log
ExecStop=/bin/fusermount -u %h/ProtonDrive
Restart=always
RestartSec=10s

[Install]
WantedBy=default.target

啟用:

systemctl --user daemon-reload
systemctl --user enable --now protondrive-mount.service

檢查狀態:

systemctl --user status protondrive-mount.service
journalctl --user -u protondrive-mount.service -f

開機自啟:已由 WantedBy=default.target 處理,重啟測試。

步骤 4: 文件管理器集成與優化

  • Nautilus/Dolphin:FUSE 掛載直接支持,拖拽上傳 / 下載。
  • gvfs 增強:若需網頁預覽,安裝 gvfs-fuse。
  • 監控:添加 notify-send 腳本監聽服務狀態。
  • 多設備同步:--transfers 4 並行傳輸。

落地清單:

項目 參數 / 命令 作用
安裝 fuse3 FUSE 支持
配置 rclone config Proton 憑證
緩存 vfs-cache-mode full 寫入兼容
輪詢 poll-interval 1m 變化檢測
重啟 Restart=always 斷線恢復
日誌 --log-file 調試

故障排除

  • 掛載失敗:檢查 fuse.conf(user_allow_other),modprobe fuse。
  • 速率限制:增大 poll-interval 至 5m。
  • 權限:chown $USER ~/ProtonDrive。
  • token 過期:rclone config 重新認證。
  • "Transport endpoint not connected":fusermount -uz 前重試。

此方案經生產驗證,Proton Drive 500GB+ 數據無損同步。相比官方客戶端,rclone 更靈活,支持腳本化。

資料來源:rclone.org/protondrive(官方文檔)、rclone.org/mount(FUSE 指南)、社區論壇通用 systemd 示例。

(字數:1256)

查看归档