Dropbox
Dropbox 是一个文件共享系统,带有 GNU/Linux 客户端。使用它可以透明地跨计算机和架构同步文件。只需将文件放入您的 ~/Dropbox
文件夹,它们将自动同步到您的中央存储库。
安装
AUR
dropboxAUR 可以被安装。作为最后的手段,Dropbox 网站提供了通过命令行进行无头安装的说明。
- 安装软件包后,您可以从应用程序菜单启动 Dropbox,或从命令行运行
dropbox
。客户端图标将出现在系统托盘中。 - 一个弹窗会通知您 Dropbox 正在从不受支持的位置运行。点击不再询问,因为您知道您是从 AUR 而不是官方主页安装的它。
- 最终,一个弹窗会要求您登录您的 Dropbox 账户或创建一个新账户。输入您的凭据。
- 一段时间后,您将看到“欢迎使用 Dropbox”弹窗,它将让您有机会观看 Dropbox 的简短教程。
- 按下“完成并转到我的 Dropbox”。
必需软件包
在首次启动 dropboxAUR 之前,必须安装 python-gpgme。否则,程序将无法在下次启动时签名二进制文件和验证签名。出于某种原因,dropboxAUR 没有将此软件包标记为必需的依赖项,但它仍然是必需的。
可选软件包
命令行界面 | dropbox-cliAUR |
GNOME/文件 集成 | nautilus-dropboxAUR |
Nemo 集成 | nemo-dropboxAUR |
Thunar 集成 | thunar-dropboxAUR |
Dolphin 集成 | dolphin-plugins |
Caja 集成 | caja-dropboxAUR |
请注意,要访问 GUI 和设置,唯一的方法是通过托盘图标。您需要一个带有系统托盘的 X 面板或一个独立的系统托盘应用程序。
阻止自动更新
自从至少 2.4.6 版本(参见 AUR 上 2013-11-06 左右的评论)以来,Dropbox 具有自动更新功能,该功能会将新的二进制文件下载到 ~/.dropbox-dist/
文件夹。然后,该服务尝试将控制权移交给此二进制文件并终止,导致 systemd 重新启动该服务,从而产生冲突和无休止的日志填充、CPU 占用问题。
一种解决方法是通过创建 ~/.dropbox-dist/
文件夹并将其设为只读来阻止 Dropbox 下载自动更新
$ rm -rf ~/.dropbox-dist $ install -dm0 ~/.dropbox-dist
这对于现代 Dropbox 客户端在 arch 上从 systemd 成功运行似乎是必要的。
另请参阅相关的 Dropbox 论坛帖子。
自动启动
在 Dropbox 首选项中的“通用”选项卡下,应该有一个“系统启动时启动 Dropbox”复选框。尝试选中此框,看看 Dropbox 是否自动启动。
如果这不起作用,请取消选中该框并使用以下方法之一代替
通过 WM/DE 自动启动
对于 KDE 用户,无需执行其他步骤,因为 KDE 会在注销时保存正在运行的应用程序,并在重新登录时自动重启它们。对于 Xfce 用户也是如此,Dropbox 将在您下次登录时自动重启,因为 dropbox.desktop
文件已放置在 ~/.config/autostart
中。
对于 Cinnamon 用户,建议通过配置启动应用程序并稍作延迟来启动 Dropbox 客户端(Cinnamon 问题 #4396)。使用 systemd 启动 Dropbox 可以工作,在后台运行,但由于某些 Cinnamon 错误(#481,#2846),系统托盘上没有图标。
如果这不起作用,您可以将 /usr/bin/dropbox &
添加到您的 xinitrc(或 ~/.config/openbox/autostart
,取决于您的设置)中,以便在启动窗口管理器时启动 Dropbox 同步客户端。
使用 systemd 在启动时自动启动
要使 Dropbox 在系统启动时自动启动,只需启用 systemd 服务,并将您的用户名作为实例标识符传递。要启用的服务单元采用 dropbox@username
格式。
默认情况下,运行该服务不会在系统托盘中为您提供图标,因为它不知道要使用哪个 X 显示。如果您想要托盘支持,请为提供的服务使用drop-in 文件。DISPLAY
和 XAUTHORITY
都需要正确设置才能显示图标。%i
将被替换为服务的实例名称,在本例中为 username
/etc/systemd/system/dropbox@username.service.d/override.conf
[Service] Environment=DISPLAY=:0 Environment=XAUTHORITY=/home/%i/.Xauthority
请注意,使用上述编辑后,除非启动 X 会话,否则 Dropbox 将无法启动。
使用 systemd 在登录时自动启动
要使 Dropbox 在您登录时自动启动,只需启用 用户服务。
如果您希望 Dropbox 出现在您的系统托盘中,您将需要编辑 用户单元,以便它知道系统托盘位于哪个 X 显示中。DISPLAY
和 XAUTHORITY
都需要正确设置才能显示图标,username
需要替换为您在系统上的用户名
~/.config/systemd/user/dropbox.service.d/override.conf
[Service] Environment=DISPLAY=:0 Environment=XAUTHORITY=/home/username/.Xauthority
请注意,使用上述编辑后,除非启动 X 会话,否则 Dropbox 将无法启动。
无需安装同步客户端访问文件
如果您只需要基本访问 Dropbox 中的文件,您可以使用 https://www.dropbox.com/ 上的 Web 界面来上传和下载文件到您的 Dropbox。这可以替代运行 Dropbox 守护程序并在您自己的机器上镜像所有文件。
rclone 软件包为许多云存储服务(包括 Dropbox)提供命令行界面。
加密您的 Dropbox 文件
如果您想在 Dropbox 中存储敏感数据,您应该先对其进行加密。同步到 Dropbox 是加密的,但所有文件(目前)都以未加密的形式存储在服务器上,就像您将它们放入 Dropbox 中一样。
- Dropbox 可以与 TrueCrypt 一起使用,并且在您最初将 TrueCrypt 卷上传到 Dropbox 后,性能相当不错,因为 Dropbox 具有可用的二进制差异。
- 另一种可能性是使用 EncFS,它的优势在于所有文件都是单独加密的,即您不必预先确定要加密的内容的大小,并且您的加密目录会在您在其中添加/删除/修改文件时增长和缩小。您还可以使用
encfs
的-S
选项在启动时挂载加密卷,以避免输入密码,但请注意,您的加密文件对于直接访问您计算机的人来说并不安全。 - 第三种选择是使用 gocryptfs。它与 EncFS 类似,不同之处在于 gocryptfs 使用经过身份验证的加密,以保护数据的机密性和完整性(防篡改)。
另请参阅 静态数据加密#云存储优化。
使用 EncFS 设置 Dropbox
按照 Wiki 说明安装 EncFS。
假设您已将 Dropbox 目录设置为 ~/Dropbox
创建一个文件夹。您要同步到 Dropbox 的文件将放在这里。
$ mkdir ~/Private
运行以下命令并在询问时输入密码
$ encfs ~/Dropbox/Encrypted ~/Private
您的安全文件夹已准备就绪;在 ~/Private
中创建任何文件都会自动将其加密到 ~/Dropbox/Encrypted
中,然后将其同步到您的云存储。如果您希望再次手动挂载 EncFS 文件夹,也可以使用相同的命令。
要在每次启动时挂载您的 EncFS 文件夹,请按照 EncFS wiki 页面中的说明进行操作。
ENCFS6_CONFIG
变量并将 .encfs6.xml
文件移动到另一个位置(例如 USB 闪存盘),以帮助确保您的加密数据和实际解密它的方法不会同时在线存在。多个 Dropbox 实例
如果您需要分隔或区分您的数据,例如个人和工作用途,您可以使用不同的电子邮件地址订阅 Dropbox,并让不同的 Dropbox 实例在单台机器上同步它们的目录。
基本原理和一般操作方法在 Dropbox Wiki 中描述。
总结一下,您可以使用以下命令设置新的或额外的实例
mkdir /path/to/.dropbox-alt-1 HOME=/path/to/.dropbox-alt-1 /usr/bin/dropbox start -i
完成后,停止任何仍在运行的 Dropbox 实例,并像这样启动它们
HOME=/path/to/.dropbox-alt-1 /path/to/.dropbox-alt-1/.dropbox-dist/dropboxd HOME=/path/to/.dropbox-alt-2 /path/to/.dropbox-alt-2/.dropbox-dist/dropboxd
注意使用不同的 .../.dropbox-dist/dropboxd
二进制文件。即使设置了自定义 HOME 值,/opt/dropbox/dropbox
或 /opt/dropbox/dropboxd
包装器也只允许一个实例,并且在启动时它们会杀死已经运行的实例。
笔记本电脑上的 Dropbox
Dropbox 本身非常擅长处理连接问题。如果您有笔记本电脑并在不同的网络环境之间漫游,如果您不重新启动 Dropbox,Dropbox 将在重新连接时遇到问题。首先尝试以下描述的方法之一, 如果由于某种原因问题仍然存在,您可以尝试以下黑客解决方案:[1],[2]。
~/.config/autostart/dropbox.desktop
文件,从而防止启动两次。使用 netctl
对于 netctl,在您使用的每个网络配置文件中分别使用 ExecUpPost
和 ExecDownPre
,或者例如在 /etc/netctl/interfaces/wlan0
中,以便在 wlan0
上的配置文件处于活动状态时自动启动 Dropbox。在您的命令中添加 '|| true' 以确保 netctl 将启动您的配置文件,即使 Dropbox 启动失败。
ExecUpPost="any other code; su -c 'DISPLAY=:0 /usr/bin/dropbox &' your_user || true" ExecDownPre="any other code; killall dropbox"
显然,必须编辑 your_user
,如果您没有任何其他代码,则可以省略 any other code;
。以上操作将确保 Dropbox 仅在有网络配置文件处于活动状态时运行。
使用 NetworkManager
对于 NetworkManager,请使用其调度器功能。
创建以下文件
/etc/NetworkManager/dispatcher.d/10-dropbox.sh
#!/bin/sh USER=''your_user'' status=$2 case $status in up) su -c 'DISPLAY=:0 /usr/bin/dropbox & ' $USER ;; down) killall dropbox ;; esac
或者,对于 systemd 替代方案
/etc/NetworkManager/dispatcher.d/10-dropbox.sh
#!/bin/sh USER=''your_user'' status=$2 case $status in up) systemctl start dropbox@$USER.service ;; down) systemctl stop dropbox@$USER.service ;; esac
不要忘记将脚本的所有者更改为 root 并使其可执行。
故障排除
Dropbox 在启动时请求 root 权限
这可能是因为它尝试修复它不接受的权限。当您在 Arch 和 Windows 使用的分区上使用 btrfs,并且忘记配置 Windows 驱动程序以使用正确的 UID 和 GID 时,可能会发生这种情况。检查是否是这种情况
find ~/Dropbox -user nobody
修复权限并正确配置您的驱动程序。请求 root 权限的模态框应自动消失。
请注意,如果 Dropbox 文件夹内的任何文件的权限不正确,而不仅仅是 Dropbox 文件夹本身,则可能会出现这种情况。
Dropbox 一直显示“正在下载文件”
但实际上现在文件已与您的 Dropbox 同步。当您的 Dropbox 文件夹位于 NTFS 分区上,并且其挂载路径包含空格,或者未设置该分区的权限时,很可能会出现此问题。有关更多信息,请参见论坛。要解决此问题,请注意您的 /etc/fstab
中的条目。避免在挂载路径中使用空格,并使用“default_permissions”选项设置写入权限
UUID=01CD2ABB65E17DE0 /run/media/username/Windows ntfs-3g uid=username,gid=users,default_permissions 0 0
从安装向导更改 Dropbox 位置
一些用户在设置 Dropbox 期间遇到问题,他们无法选择 /home/username/Dropbox
以外的 Dropbox 文件夹。在这种情况下,当显示用于更改路径的窗口时,点击 Ctrl+l
,输入位置(例如 /mnt/data/Dropbox)并点击选择或打开按钮。
Thunar、GNOME 文件或其分支 Nemo 等多个文件管理器都带有扩展程序,这些扩展程序为 Dropbox 中的文件和文件夹提供上下文菜单条目。它们中的大多数将导致浏览器操作,例如在 dropbox.com 中打开文件或文件夹或共享链接。如果您遇到这些条目不起作用的情况,则可能是您没有设置 Dropbox 需要的 $BROWSER
变量。有关详细信息,请参阅环境变量。
正在连接...
可能会发生 Dropbox 无法成功连接,因为它在建立互联网连接之前加载,如多个帖子(多年来帖子)中所述。这可能发生在无线连接或有线网络上的快速加载机器上。对于有线和无线连接,解决此问题的最佳方法是#笔记本电脑上的 Dropbox,这将确保仅在建立连接后才启动 Dropbox。
对于那些不使用 netctl 或 NetworkManager 的用户,另一种解决方案是延迟 Dropbox 的启动
cp ~/.config/autostart/dropbox.desktop ~/.config/autostart/dropbox-delayed.desktop
- 通过取消选中 Dropbox - 首选项 - 通用 - 系统启动时启动 Dropbox 来阻止 Dropbox 执行标准自动启动。这将删除
~/.config/autostart/dropbox.desktop
。 - 编辑
~/.config/autostart/dropbox-delayed.desktop
并将Exec=dropbox
替换为Exec=bash -c "sleep timeout && dropbox"
。调整 timeout 参数,3
的值是一个好的开始。
另一种可能性是 Arch Linux 默认更新并安装 dbus-broker,恢复到 dbus-daemon-units 将解决此问题,Dropbox 似乎不支持 dbus-broker。
Dropbox 无法启动 - “这通常是由于权限错误”
检查权限
在运行应用程序之前,请确保您拥有 Dropbox 的目录。这包括
~/.dropbox
- Dropbox 的配置目录~/Dropbox
- Dropbox 的下载目录(默认)
您可以使用 chown -R
更改其所有者来确保这一点。
此错误也可能是由 /var
已满引起的。
重新链接您的账户
Dropbox 的 FAQ 建议此错误可能是由配置错误引起的,并且可以通过(重新)移动当前配置文件夹来修复
# mv ~/.dropbox ~/.dropbox.old
并重启 Dropbox。
空间不足导致的错误
可能发生的常见错误是您的 /tmp
和 /var
分区上没有更多可用空间。如果发生这种情况,Dropbox 将在启动时崩溃,并在其日志中显示以下错误
Exception: Not a valid FileCache file
可以在论坛中找到此类事件的详细故事。在启动 Dropbox 之前,请确保有足够的可用空间。
另一种情况是根分区已满
OperationalError: database or disk is full
使用 df
检查分区上的可用空间。
文件系统监控问题
如果您的 Dropbox 文件夹中有很多文件要同步,您可能会收到以下错误
Unable to monitor filesystem Please run: echo 100000 | sudo tee /proc/sys/fs/inotify/max_user_watches and restart Dropbox to correct the problem.
这可以通过添加
fs.inotify.max_user_watches = 100000
到 /etc/sysctl.d/99-sysctl.conf
,然后重新加载内核参数来轻松修复
# sysctl --system
代理设置
设置 Dropbox 的代理设置的最简单方法是在“首选项”窗口的“代理”选项卡中手动定义它们。或者,您也可以将其设置为“自动检测”,然后在启动 Dropbox 之前将您的代理服务器导出到 http_proxy 环境变量(HTTP_PROXY 也可用)
env http_proxy=http://your.proxy.here:port /usr/bin/dropbox
或
export http_proxy=http://your.proxy.here:port /usr/bin/dropbox
http://your.proxy.here:port
形式的代理设置,而不是像某些其他应用程序那样使用 your.proxy.here:port
。GNOME 中缺少托盘图标
GNOME 3.26 在 bug 785956 中删除了对托盘图标的支持,这将阻止 Dropbox 图标显示。要恢复托盘图标,需要安装适当的扩展程序,例如 App Indicator。
Cinnamon 中缺少托盘图标
由于 Cinnamon 正在使用 XApp.StatusIcon(替换 GNOME 中已弃用的 Gtk.StatusIcon,见上文),以通过 dbus 在多个桌面环境中传递信息,请确保您已安装 XApp Status Applet (xapp-status) 并将其添加到面板,否则 Dropbox 状态图标可能根本不显示。
wlroots (sway, river) 中缺少托盘图标
在环境中以 DISPLAY=:0
和 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
启动 Dropbox 似乎可以解决问题。已使用 waybar(使用 SNI)进行测试。