为什么不用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时将共享分区挂载到我的主目录中。 这需要两个相当简单的步骤。

  1. 安装并使用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/

  2. 通常,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选项允许从原始安装点和新安装点访问文件)。

在我写这篇文章的时候,我正在听我完全同步的新装音乐库!!