Linux下如何断开符号链接(symlink)并保留对应目录的内容
实现方案
你可以通过「拷贝链接指向的实际内容→删除原有符号链接→替换为实际目录」的流程完成需求,具体操作如下:
- 第一步:进入foo目录,解引用符号链接拷贝完整内容到临时目录
执行命令:cp -rL bar bar_tmp
参数-L的作用是解引用符号链接,直接拷贝链接指向的实际文件内容,而非拷贝链接本身。 - 第二步:删除原有符号链接
执行命令:rm bar
注意:命令末尾不要加/后缀,加后缀会被系统识别为链接指向的实际目录,可能导致源目录内容被误删,你之前操作删除了整个bar目录大概率是加了该后缀导致的。 - 第三步:将临时目录重命名为bar
执行命令:mv bar_tmp bar
操作完成后可以执行ls -l验证,此时bar会显示为普通目录(权限前缀为d而非l),原有a.txt、b.py、c.py内容都会完整保留,且后续修改bar目录内容不会影响原linked_dir的内容。
注意事项
该操作会把原链接指向的内容完整复制一份到foo目录下,需要确保当前磁盘剩余空间足够容纳对应目录的所有内容。
内容的提问来源于stack exchange,提问作者Kunal Shah
相关产品推荐
相关产品推荐

