为什么不用Ubuntu One在家外同步文件夹?
我花了一段时间才发现使用Ubuntu One我只能同步我的主文件夹中的文件夹。 在所有其他文件夹中,Ubuntu One选项在首选项中可用,但实际操作显示为灰色。
Ubuntu One FAQ非常明确:
不,目前您只能选择同步主目录中的文件夹。
但我真的想知道为什么,如果这会改变,如果有一个技巧(另一个是设置我的家/
)?
我个人在我的主文件夹中没有任何重要数据,除了程序配置。 所有文档,图片,音乐都位于名为/data
的文件夹中,该文件夹实际位于不同的分区上。 当想要重新安装Ubuntu时,这会更容易。
它不会改变,至少在可预见的未来(并且在此我可以预见未来几年)。 允许用户在他们家外面选择任意文件夹以便与Ubuntu One同步,这可能会在多台不同的计算机之间同步,这会打开大量的可用性问题来覆盖一个用例,坦率地说,并不是那么常见。
我记得的一个问题是,如果你试图同步一个可移动设备的挂载点(很多人尝试这样做),当你删除设备时,syncdaemon将删除所有内容; 为了使它正常工作,syncdaemon必须了解设备,检测它们的移除,这样的事情。 相当大的努力,以及可用性噩梦的很大潜力。
另一个问题是,如果您尝试同步具有特殊权限,所有权或文件类型的文件夹:将/etc/
, /tmp/
或/dev/
视为一些最糟糕的情况。 或者你不拥有的任何文件夹,真的。 我们可以简单地禁止同步您不拥有的文件夹,但我们知道有些人正在以root身份运行syncdaemon(尽管有我们的警告)。
你的解决方法是挂载(通过/etc/fstab
,这样你就可以确定每次都安装分区 – 否则你可能会丢失已同步的数据) /data
文件夹进入你的家。 你可以简单地将/data
移动到~/data
或者如果你有/data
路径硬编码(非常可能),或者你已经习惯了/data
(也很可能),symlink或bind mount /data
到您家中的挂载点。 如果您根本不想在家中看到它,只需将其设为~/.data
。
我确实设法通过使用绑定挂载来实现此function。 /etc/fstab
的行如下所示:
/mnt/s1/Audio /home/daniel/Music bind defaults,bind 0 0
显然,您需要对相关文件夹的写入权限。 可能你也可能需要拥有这些文件,我不确定。
我怀疑原因是权利。 您会注意到您无法轻松编辑主目录之外的任何文件? 这是linux的一般安全function,我怀疑Ubuntu One开发人员(非常正确)认为普通用户会将所有文件保存在主目录中,守护程序可以在没有提升权限的情况下轻松运行。
关于你的配置的一个注意事项,它只是一个偏好的问题,但我保持我的完整/ home /在一个单独的磁盘/分区上。 这确实意味着在重新安装之间需要通过并删除所有隐藏文件夹/文件以进行全新安装,但是将为您提供具有ubuntuone权限等的完全本机主目录的优势 – 只是一个想法。
用两个词来说:使用Dropbox。
@Chipaca列出的原因可能很难克服,但Dropbox已经以某种方式进行了管理。 没错,这个解决方案不是开源的,但是直到Ubuntu One的人解决了一些主要的可用性问题(这是其中之一),很多用户将无法使用Ubuntu One。
我在Ubuntu 12.04下有一个非常类似的设置。 我有一个NFTS分区,上面有我的音乐库,Windows 7和Ubuntu都可以看到它。 我希望能够将此目录同步到Ubuntu One,而无需将整个目录显式移动到我的主目录(似乎是一个合理的请求,对吧?)。
我的解决方案只是在每次启动到Ubuntu时将共享分区挂载到我的主目录中。 这需要两个相当简单的步骤。
-
安装并使用
pysdm
以确保分区在启动时正确安装(不一定在主目录中,只是文件系统中的某个位置)。 或者,如果您有足够的信心,可以自己修改/etc/fstab
文件。 作为一个相当新的用户,我发现pysdm解决方案更直接。无论哪种方式,请确保在执行此步骤之前备份
/etc/fstab
文件! (以防万一!)sudo cp /etc/fstab /etc/fstab.old
(例如)如果出现问题,您可以随时恢复旧文件并返回原点:
sudo cp /etc/fstab.old /etc/fstab
在
pysdm
GUI中,选择目标分区并单击“Assistant”按钮。 确保选择“设备的所有者可以安装它”选项。 这将确保您可以使用Upstart在主目录中重新安装。 在我的例子中,我将sda4
分区设置为挂载在/media/sda4/
。 -
通常,Upstart的行为由
/etc/init/
目录中的文件定义。 要在我的主目录中安装新分区(对我来说,/media/sda4
),我定义了一个包含以下内容的/etc/init/mount-mydirs.conf
文件:start on runlevel [2345] task exec /bin/mount-mydirs`
第一行告诉Upstart在正常启动时执行任务。 第二行告诉Upstart,作业将被执行一次(不是作为无限期或重复的作业),最后一行告诉它执行脚本
/bin/mount-mydirs
(具有root权限)。文件`/ bin / mount-mydirs’看起来像:
mount --bind /media/sda4/ /
(–bind选项允许从原始安装点和新安装点访问文件)。
在我写这篇文章的时候,我正在听我完全同步的新装音乐库!!