(译)在任何文件系统下使用 Dropbox
Dropbox 曾取消支持 ext4 / NTFS / HFS+ / APFS 以外的部分文件系统支持,遇到这种情况我们应该怎么做?
原文链接:https://ihaveabackup.net/article/use-dropbox-on-any-fs
题图链接:https://i2.wp.com/itsfoss.com/wp-content/uploads/2018/08/dropbox-filesystem-support-featured.png
译文:
在任何文件系统下使用 Dropbox
如果你在 ext4 以外的文件系统下使用 Dropbox,你可能会在过去的两个月(译注:指 2018.7 - 2018.8)内被下面这条警告弄得很烦:
请移动 Dropbox 的位置。Dropbox 将于十一月停止同步。
根据 Dropbox 的说法,这是预期行为,他们的官方回复如下:
大家好,在 2018.07.11,我们将会停止对 Dropbox 同步到使用某些不常见文件系统的驱动器的支持。受支持的文件系统为:Windows 下的 NTFS,Mac 下的 HFS+ 或 APFS,和 Linux 下的 Ext4。我们在此更新了相应的桌面需求。因为 Dropbox 依赖于拓展属性(X-attrs)来识别 Dropbox 文件夹下的文件,并让它们保持同步。我们将会继续并且仅支持最常见的,支持 X-attrs 的文件系统,因此我们能确保稳定性和一致的体验。
首先,我建议大家都试试看 syncthing,先看看它能否满足你的需要,因为它真的是一个很好的替代品。我也在法律层面上对这件事有些好奇,因为 Dropbox 更改了他们的用户协议,已付费的用户现在可以取消付费吗?
这就是「抱歉,我们在某些文件系统上遇到了玄学问题,所以现在我们只有能力支持一个」的企业扯淡版,但这么说就是一个市场和营销失误了,所以他们把这个当作「一致的体验」和「稳定性」的卖点,然后提了提 xattrs,其实每个文件系统都支持它。下面是解决办法。
回到主题,解决办法是,在一个文件中创建一个 ext4 文件系统,将那个文件挂载为 loopback,把 dropbox 文件夹移动到那,然后让 systemd 在首次访问的时候自动挂载它。这让你能运行 Dropbox 而不用管你本来的文件系统是什么,又因为有 systemd 自动挂载,整个流程绝对是自动化并且无痛的。
- 关闭 dropbox
- 查看你 Dropbox 文件夹的大小
du -hs ~/Dropbox
truncate --size 5G dropbox.img
# 根据需要调整大小- 如果你正在使用一个 CoW 的文件系统,使用
chattr +C dropbox.img
来对 image 关闭 CoW mkfs.ext4 -F dropbox.img
mv Dropbox Dropbox.old
sudo mount -o loop,rw dropbox.img ~/Dropbox
sudo chown youruser:youruser ~/Dropbox
cp -r Dropbox.old/* Dropbox/
sudo umount ~/Dropbox
创建两个文件,然后把它们放在 /etc/systemd/system/
下。文件名必须反映出挂载点,这在 systemd spec 里有(请注意 Dropbox 的首字母大写):
/etc/systemd/system/home-youruser-Dropbox.mount
1
2
3
4
5[Mount]
What=/home/youruser/dropbox.img
Where=/home/youruser/Dropbox
Type=ext4
Options=loop,rw
/etc/systemd/system/home-youruser-Dropbox.automount
1
2
3
4
5
6
7
8
9
10
11[Install]
WantedBy=multi-user.target
[Unit]
Description=Automount Dropbox
[Automount]
Where=/home/youruser/Dropbox
[Install]
WantedBy=multi-user.target
使用 systemctl daemon-reload
重载 systemd,然后使用 sudo systemctl start home-youruser-Dropbox.automount
开启自动挂载。如果你输入 ls ~/Dropbox
,你就会看到你 Dropbox 文件夹下的文件了,因为 systemd 自动挂载了它。不要继续后面的步骤除非前面的已经顺利完成。
使用 systemctl enable home-youruser-Dropbox.automount
开启自动挂载并让它开机自动运行,然后再打开 dropbox。一切应该都正常工作。
可能可以使用 systemd 用户文件(而不是系统文件)来完成这一操作,就当作留给读者的练习吧。
另外还有一点,如果你的文件系统有快照,你将会不能对 Dropbox 文件夹「增量」快照,因为它现在是单独挂载的,并不会包含在快照里。由于 Dropbox 有自己的备份机制,而且镜像文件本身还是会在你的快照里出现,所以应该问题不大。
2020-02-15 更新
Dropbox 已宣布恢复其他系统的支持,这篇文章目前可能没有较大参考价值了。
(译)在任何文件系统下使用 Dropbox