cp -sr与ln -s创建符号链接的差异及技术咨询
关于
ln -s和cp -sr在Dropbox中创建符号链接的差异解析 我完全懂你这种困惑——本来想靠符号链接省空间,结果两个命令表现差这么多,我来给你掰扯清楚:
核心差异:两个命令的本质作用
ln -s 源文件夹 目标:这个命令只做一件事——给整个源文件夹创建一个「快捷方式」(符号链接)。目标位置的那个“文件夹”其实只是个指向源文件夹的指针,本身不包含任何文件。你之所以觉得它把文件复制到新位置了,大概率是Dropbox的特性在搞鬼:当你点击这个链接访问时,Dropbox为了让你能正常查看内容,会自动把源文件夹里的文件下载到本地(尤其是开启了智能同步的情况下),看起来像是复制,但源文件还是只存了一份,这个链接只是个“入口”而已。cp -sr 源文件夹 目标:这个命令是递归地给源文件夹里的每一个文件、每一个子文件夹单独创建符号链接。目标位置的文件夹是真实存在的,里面的每个条目都是指向源对应内容的小指针,完全不会占用额外存储空间——这正是你想要的“避免重复文件”的效果!
结合Dropbox的特殊逻辑
Dropbox对符号链接的处理有自己的规则:
- 对于
ln -s创建的整个文件夹的链接,Dropbox默认只会同步这个链接本身,但当你访问它时,会触发Dropbox加载源文件夹的内容,让你产生“文件被复制”的错觉; - 对于
cp -sr创建的单个文件/文件夹的链接,Dropbox能识别每个链接指向的源文件,只会同步这些轻量的链接,不会重复存储源文件内容,完美适配你节省存储空间的需求。
实操示例
假设你要把~/Dropbox/OriginalPhotos的内容通过链接放到~/Dropbox/ProjectPhotos里:
- 用
ln -s ~/Dropbox/OriginalPhotos ~/Dropbox/ProjectPhotos/Original_Link:ProjectPhotos里的Original_Link是一个指向OriginalPhotos的快捷方式,打开它时Dropbox会加载源文件夹的文件到本地; - 用
cp -sr ~/Dropbox/OriginalPhotos ~/Dropbox/ProjectPhotos/Original_Link_Files:ProjectPhotos里的Original_Link_Files是真实文件夹,里面每个照片、子文件夹都是指向OriginalPhotos对应内容的符号链接,完全不占额外空间。
总结一下:如果你的目标是避免重复文件、节省存储空间,直接用cp -sr就对了;ln -s适合快速创建整个文件夹的快捷入口,但在Dropbox里的表现容易让人误解。
内容的提问来源于stack exchange,提问作者Nate
相关产品推荐
相关产品推荐

