为什么不使用 Ubuntu One 同步家庭外的文件夹?

为什么不使用 Ubuntu One 同步家庭外的文件夹?

我花了一段时间才发现,使用 Ubuntu One,我只能同步主文件夹中的文件夹。在所有其他文件夹中,Ubuntu One 选项在首选项中可用,但实际操作是灰色的。

Ubuntu One 常见问题解答对此非常清楚:

不可以,目前您只能选择同步主目录内的文件夹。

但我实际上想知道为什么以及这是否会改变以及是否有解决方法(除了将我的家设置为之外的其他方法/)?

我个人的主文件夹中除了程序配置外没有任何重要数据。所有文档、图片、音乐都位于名为的文件夹中,该文件夹/data实际上位于不同的分区上。当想要重新安装 Ubuntu 时,这会让事情变得容易得多。

答案1

至少在可预见的未来不会改变(在这方面我可以预见未来几年)。允许用户选择家庭以外的任意文件夹与 Ubuntu One 同步,这可能会在多台不同的计算机之间同步,这会带来大量可用性问题,以涵盖坦率地说并不常见的用例。

我记得的一个问题是,如果您尝试同步可移动设备的安装点(很多人都尝试这样做),当您移除设备时,syncdaemon 将删除所有内容;要使其正常工作,syncdaemon 必须了解设备、检测其移除等。这需要付出相当大的努力,并且很有可能带来可用性噩梦。

另一个问题是,如果您尝试同步具有特殊权限、所有权或文件类型的文件夹:请考虑或/etc/,这是最糟糕的情况。或者实际上任何不属于您的文件夹。我们可以简单地禁止同步不属于您的文件夹,但我们知道有些人以 root 身份运行 syncdaemon(尽管我们发出了警告)。/tmp//dev/

一个解决方法是将文件夹挂载(通过/etc/fstab,这样您就可以确定每次都挂载了分区——否则您可能会丢失同步的数据)/data到您的家中。您可以简单地移动/data~/data,或者,如果您有路径/data硬编码的东西(很有可能),或者如果您已经习惯了/data(也很有可能),符号链接或绑定挂载/data到您家中的挂载点。如果您根本不想在您的家中看到它,只需将其设置为~/.data

答案2

我确实设法通过使用绑定安装使其工作。行看起来/etc/fstab像这样:

/mnt/s1/Audio   /home/daniel/Music      bind    defaults,bind   0       0

显然,您需要对相关文件夹具有写入权限。也许您还需要拥有这些文件,我不确定。

答案3

我怀疑原因是权限。您会注意到您也无法轻松编辑主目录之外的任何文件吗?这是 Linux 的一般安全功能,我怀疑 Ubuntu One 开发人员(非常正确)认为普通用户会将所有文件保存在主目录中,守护进程可以在没有提升权限的情况下轻松运行。

关于您的配置,顺便提一下,这完全取决于个人喜好,但我将完整的 /home/ 保存在单独的磁盘/分区上。这确实意味着在重新安装之间,您需要浏览并删除所有隐藏的文件夹/文件以进行全新安装,但这会为您提供具有 ubuntuone 权限的完全本机主目录等优势 - 只是一个想法。

答案4

我在 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

    pysdmGUI 中,选择目标分区并点击“助手”按钮。确保选择“设备所有者可以挂载它”选项。这将确保您可以使用 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/ /<home directory>

    (--bind 选项允许从原始挂载点和新挂载点访问文件)。

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

相关内容