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


20

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

为了使这个问题更清楚:在文件管理器的“类型”列中,连接到Dropbox之前,Link_to_notes显示为链接,大小为32字节。连接到Dropbox后,Link_to_notes显示为纯文本文档,大小为18.7 kB,即Notes文件的大小。


2
随着Dropbox成为跨平台解决方案,其他所有行为都可能会更加令人困惑-如果将文件夹与Windows计算机同步,它将如何表现?
谢尔盖(Sergey)2013年

自2019年中以来,Dropbox不再遵循符号链接
eri0o

从当前的写作来看,符号链接不再起作用,而且很烂。
Jus12

Answers:


15

DropBox遵循符号链接并将其视为目录。对于备份而不必将文件和目录移动到DropBox目录中,它确实非常有用。

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

这可能是危险的行为。例如,如果我从Dropbox目录中删除链接,是否有可能我也意外删除了原始文件或文件夹?
维孔

@Vicon,这不是危险的行为,这是预期的行为。但是,是的,要明确一点,如果您删除符号链接,文件也将从Dropbox中删除
-Gregology,

2
在Dropbox社区中,一再声明,Dropbox不支持符号链接,强烈建议不要使用它。如果您联系Dropbox客户支持,他们将要求您删除任何符号链接,然后继续。当然,人们仍然可以使用它,但这不是Dropbox想要的行为,并且可能是危险的(丢失文件),有问题的(具有无意同步的重复文件,这是此问题中需要解决的问题),作为同步性能问题等
威康

@Vicon,符号链接对许多操作透明地运行:读取或写入由符号链接命名的文件的程序的行为就像直接在目标文件上操作一样
Gregology

1
这种方法在ext4文件系统中对我长期以来一直有效。我没有任何危险的感觉,因为我从未与Dropbox中的Dropbox文件进行交互。它成功地将我的Linux系统和Android平板电脑链接在一起。但是,我注意到此链接说我的建议已经过时help.dropbox.com/installs-integrations/sync-uploads/symlinks
pauljohn32

7

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

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

ln -s ~/Dropbox/Documents ~/Documents

这可以防止Dropbox变得混乱,并取消内部链接的任何链接,因为您拥有所有内容,而当您希望将它们放置在其他位置时,可以在Dropbox中链接到它们。基本规则是,在dropbox文件夹内的任何位置都没有任何符号链接...将它们放在dropbox文件夹外,您将没有问题。

我在几台ubuntu机器上都有保管箱,所有主要的顶级文件夹实际上都存储在保管箱中。


为什么Dropbox会感到困惑?以及Dropbox如何改变符号链接?符号链接由文件系统自动解析
-Gregology

6

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


2

TL; DR:以下是一种仅在图形用户界面(GUI)级别上获得与符号链接非常类似的行为的方法,如果您希望DropBox重复将相同文件复制到DropBox中的不同文件夹中,则该方法特别有用只是因为您想从不同的位置(即文件夹路径)查看它们。

背景

如果我在DropBox文件夹层次结构中创建符号链接(符号链接),甚至填满帐户,都会被DropBox复制文件夹所困扰。正如许多人在网络上指出的那样,DropBox缺乏正确处理符号链接的方法并没有真正的解决方法,这是不幸的,因为这样做并不难。

解决方法

但是,我使用的一种解决方法是在DropBox层次结构中实现符号链接的等效行为---其他人通常称为“内部符号链接” ---在没有DropBox复制所有内容的情况下,创建等效于Windows快捷方式文件(即,MS生态系统中的.lnk文件)。为此,我创建了一个.desktop文件,该文件将系统的文件管理器打开到所需的路径。因此,此解决方法仅在GUI级别有效,并且仅适用于XDG兼容系统(例如,Ubuntu,基于GNOME的系统以及许多其他系统)。

例如,我正在阅读高级Python技术,以从事一项新工作,正在阅读的PDF存储在GoodReader应用(iOS)的DropBox文件夹中,因此我可以在桌面上阅读它们和我的移动设备。无需深入到该文件夹​​(/home/morse/lib/active/GoodReader/Books/Python),我只需在下面创建一个包含以下内容的Python.desktop文件夹/home/morse/Desktop

#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Name=Python
Exec=nautilus /home/morse/lib/active/GoodReader/Books/Python
Icon=/usr/share/icons/MacBuntu-OS/places/96/stock_folder.png
Terminal=false

(注:一定要适应Exec=nautilus ...,如果你使用的不是其他的Nautilus文件管理器部分,当然你会想适应Name=Icon=在中和路径部分Exec=的每一个“符号链接”您希望创建行。)

这样,我在桌面上看到一个名为Python的文件夹,其作用类似于符号链接---即,双击它会打开相应的文件夹---但只有一个小的文本文件(例如Python)。桌面)同步到DropBox和我的其他系统(与之相反,所有内容最终都会被DropBox复制到各处)。

与其他.desktop文件一样,必须设置许可权,以使文件既可读又可执行(例如chmod 700 Python.desktopchmod 755 Python.desktop),以使所显示的图标显示并双击它可以实际执行任何操作。

摘要

总而言之,在本示例中,我将始终在DropBox中的某个位置提供实际文件/home/morse/lib/active/GoodReader/Books/Python---但在所有基于linux的系统中,我还将拥有一个桌面“快捷方式”还配置了DropBox。

当然,此解决方法在命令行级别上不起作用,就像真正的符号链接一样。

就是说,这在GUI级别上确实是一种新颖的解决方法,我从未在其他地方看到过这种解决方法。因此,我希望这种方法可以对其他人有用。


这是天才!到目前为止,我还没有看到内部符号链接的解决方案!这是非常整洁的。谢谢您度过我的快乐!我应该补充一点,尽管您可能无法直接“ cd”进入目录,但制作一个命令行脚本应该相当简单,该脚本可以解析.desktop文件并打开符号链接的文件或文件夹。
Praveen

0

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

先前的答复是详尽无遗的。我只是建议基于单一原则的三种解决方法。第三个看起来比较困难,但是非常有效。这个想法是:将符号链接压缩到tar文件(Dropbox不会将其视为链接),然后将其保存到Dropbox。第三种方法几乎与将链接直接复制到Dropbox一样直接-实际上比逐个复制几个链接要快得多。

我通常在Lubuntu安装中使用大约20个符号链接,例如用于快速访问保存在Dropbox中的bash脚本,外部硬盘,经常使用的文档等。它们都在我的主目录和桌面中,我找到了具有它们的Dropbox副本以用于其他安装或dist-upgrade时(即在尝试dist-upgrade后重新安装时)使用起来很方便。

第一种方式

您创建一个名为MyLinks的目录(例如,在Documents中),并将所有主符号链接复制到该目录;如果您在其他目录中有符号链接,请在MyLinks中创建子目录,然后将符号链接复制到它们。例如,如果要保存的链接位于home和Desktop中,则将home链接复制到MyLinks,在其中创建一个名为Desktop的目录,然后将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

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

第三种方式(最好)

收集tar文件中所有符号链接的一种快速方法是:在家庭/用户中打开一个终端(打开终端时默认),并:

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

缺点是,您会获得所有链接,包括一些您甚至不知道的mozilla或hplip符号链接。为了避免这种情况,并且不经过递归地复制指定目录列表中的所有符号链接,只需在上面的命令中“ find”之后写入该列表。假设您要保存家庭/用户和桌面的链接;你可以写

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

“ -maxdepth 1”是为了防止发现内容通过家递归。您可以根据需要向tarfile添加路径。或者:

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

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

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

用您选择的目录替换“ find”之后的目录,并用您选择的命令名替换“ save_symlinks”。要还原,请打开文件管理器(如果以上命令中目录的路径不是绝对路径,则tarfile必须位于主目录/用户中),右键单击并解压缩。

如果这样做,生活会更轻松。您要做的就是:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.