符号链接在 Dropbox 中如何工作?

符号链接在 Dropbox 中如何工作?

我创建了一些指向文件夹中文件的链接。当我将该文件夹添加到 Dropbox 时,链接包含指向该文件的重复副本。您遇到过这个问题吗?您知道发生了什么吗?有解决方案吗?

把这个问题说清楚一点:在文件管理器的“类型”一栏中,在连接Dropbox之前,Link_to_notes显示为一个链接,大小为32字节。连接Dropbox之后,Link_to_notes显示为一个纯文本文档,大小为18.7kB,也就是notes文件的大小。

答案1

DropBox 会跟踪符号链接并将其视为目录。这对于无需将文件和目录移动到 DropBox 目录中进行备份非常有用。

$ ln -s ~/Documents/ ~/Dropbox/Documents

或者将文件存储在 DropBox 中并创建反方向的符号链接

$ ln -s ~/Dropbox/Documents/ ~/Documents

答案2

最好的方法是将文件存储在 Dropbox 文件夹中,并从外部对其进行符号链接......

因此创建 ~/Dropbox/Documents 和符号链接:

ln -s ~/Dropbox/Documents ~/Documents

这样可以避免 Dropbox 混淆并取消链接任何内部链接,因为您拥有所有内容,而当您想要它们在其他地方时,您会在 Dropbox 中链接到它们。基本规则是不要在 Dropbox 文件夹内的任何地方有任何符号链接...将它们放在 Dropbox 文件夹之外,您就不会有问题。

我在几台 ubuntu 机器上安装了 dropbox,并且我所有的主要顶级文件夹实际上都存储在 dropbox 中。

答案3

dropbox 将跟随符号链接到目录,但它将破坏文件的链接(符号或硬链接)并将其替换为文件。

答案4

压缩您的链接并将压缩文件保存到 Dropbox

前面的回复非常详尽和清晰。我只是基于一个原则提出了三种解决方法。第三种方法看起来更难,但非常有效。这个想法是:将符号链接压缩为 tar 文件,Dropbox 不会将其视为链接,然后将其保存到 Dropbox。第三种方法几乎与将链接直接复制到 Dropbox 一样直接——实际上比逐个复制多个链接要快得多。

我在 Lubuntu 安装中通常使用大约二十个符号链接,例如用于快速访问保存在 Dropbox 中的 bash 脚本、外部硬盘、常用文档等。它们都在我的主目录和桌面中,我发现拥有一个 Dropbox 副本以用于其他安装或进行 dist-upgrade 时(即,当我尝试 dist-upgrade 后重新安装时;)很方便。

第一种方式

您创建一个名为 MyLinks 的目录(例如,在 Documents 中),并将所有主目录符号链接复制到该目录中;如果您在其他目录中有符号链接,请在 MyLinks 中创建子目录并将符号链接复制到其中。例如,如果您要保存的链接位于主目录中和桌面中,请将主目录链接复制到 MyLinks,在其中创建一个名为 Desktop 的目录并将桌面链接复制到该目录中。然后打开终端,cd Documents(假设这是 MyLinks 所在的目录)并创建一个 tar 文件:

tar -cvf MyHomeLinks.tar MyHomeLinks

(请记住在 tarfile 名称中添加“.tar”扩展名,否则 Ubuntu Archive Manager 将拒绝打开它。)如果你这样做,请注意不要在 tar 中添加选项 -h(--dereference),因为它会像 Dropbox 一样压缩目标文件而不是符号链接。(顺便说一句,在大多数情况下,这种行为是受欢迎的,特别是如果人们追求可移植性,但如果有人想将符号链接保存为符号链接,那就不受欢迎了。)

tar 文件还会包含暂时断开的链接,例如当前未安装的外部硬盘的链接 - 这没问题。

将 tar 文件保存在您的 Dropbox 中。当您需要链接时,将 tar 文件复制到文件系统中的目录(而不是 Dropbox 中),提取它(只需右键单击并选择“在此处提取”),然后将符号链接复制回您想要的位置。

第二种方式

如果您想要保存的符号链接具有单一前缀(例如“MySl”...),您可以通过这种方式非常快速地创建 tarfile(添加不必要的空格以防止错误):

find   .   -name   "MySl*"|xargs  tar  cvf  MyLinks.tar

“find” 后面的单个点表示当前目录:在主目录中打开终端(默认情况下)。您当然可以添加 tar 文件的路径,并且可以从非主目录的另一个目录发出命令:将“.”替换为您的主目录/用户的路径。无需像上面的 MyLinks 那样创建工作目录。恢复符号链接也很快:将 tar 文件复制到您的主目录,右键单击它并“在此处提取”。但是,在开始为所有符号链接的名称添加前缀之前,请先查看下一个选项。

第三种方法(也是最佳方法)

将所有符号链接收集到 tar 文件中的一种非常快捷的方法是:在您的主目录/用户中打开一个终端(这是打开终端时的默认设置),然后:

find  .  -type  l|xargs  tar  -cvf  AllLinks.tar

缺点是,你会得到所有的链接,包括一些你甚至不知道的 mozilla 或 hplip 符号链接。为了避免这种情况,并复制所有且仅复制指定目录列表中的符号链接无递归,您可以在上面的命令中的“find”后面写下列表。假设您想保存 home/user 和 Desktop 中的链接;您可以这样写

 find /home/<USER>/ /home/<USER>/Desktop/ -maxdepth 1 -type l|xargs tar -cvf MyLinks.tar

“-maxdepth 1” 是为了防止 find 通过 home 进行递归。您可以根据需要添加 tarfile 的路径。或者:

 find .  Desktop -maxdepth 1 -type l|xargs tar -cvf MyLinks.tar

如果您很懒,又想经常使用它,可以将其作为别名添加到 .bashrc 或主目录中的 .bash_aliases(.bash_aliases 是一种非常方便的收集别名的方法,为什么不将它们保存到 Dropbox...)。只需在主目录中创建一个名为 .bash_aliases 的新空文件(即 /home/user),用文本编辑器打开它并在其中写入以下行:

alias save_symlinks='find . Desktop -maxdepth 1 -type l|xargs tar -cvf MyLinks.tar'

将“find”后面的目录替换为您选择的目录,并将“save_symlinks”替换为您选择的命令名称。要恢复,请打开文件管理器(如果上述命令中的目录路径不是绝对路径,则 tarfile 必须位于 home/user 中),右键单击并提取。

如果你这样做,生活就会变得更容易。你所要做的就是:

保存:在终端中输入 save_symlinks,将主目录中的 tarfile 保存到 Dropbox;恢复:将文件从 Dropbox 复制到主目录,右键单击它并选择“在此处提取”。

相关内容