You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell中同时复制符号链接及其指向文件/目录的方法

解决同时复制符号链接及其指向目标的问题

没问题,我来帮你搞定这个需求——既要复制符号链接LATEST本身,又要把它指向的目标内容一并复制过去。你用cp -d只能复制链接本身的情况很常见,这里有几种实用的实现方法:

方法一:分两次复制(最直观)

先复制符号链接指向的目标目录,再复制符号链接本身,这样能保证复制后的链接依然指向正确的目标:

# 第一步:复制LATEST指向的目标目录file1到目标路径
cp -r file1 /path/to/your/destination/
# 第二步:复制符号链接LATEST,保留其链接属性
cp -d LATEST /path/to/your/destination/

复制完成后,目标目录里的LATEST会和原目录一样,指向同目录下的file1,结构完全一致。

方法二:用cp的-L参数一次性处理目标+链接

如果你想用更紧凑的命令,可以利用cp -L(--dereference)参数跟随符号链接复制内容,再单独复制链接:

# 跟随LATEST链接,复制其指向的内容到目标目录,命名为原目标名file1
cp -rL LATEST /path/to/your/destination/$(basename LATEST)
# 再复制原始符号链接
cp -d LATEST /path/to/your/destination/

这里$(basename LATEST)会自动提取链接指向的目标名称(也就是file1),避免手动输入出错。

方法三:用rsync一键搞定(最便捷)

rsync在处理文件和链接的复制时非常灵活,能一次性完成“复制链接+复制目标内容”的操作:

# 仅复制LATEST和它指向的file1到目标目录
rsync -avL --include='LATEST' --include='file1' --exclude='*' ./ /path/to/your/destination/

参数说明:

  • -a:归档模式,保留文件权限、所有权等所有属性
  • -v:显示复制过程的详细信息
  • -L:跟随符号链接,复制其指向的实际内容
  • --include:指定需要复制的文件/目录,这里我们明确要LATEST和file1
  • --exclude='*':排除其他所有未指定的内容

如果你的当前目录只有file1、file2和LATEST,且不需要排除file2,可以简化成:

rsync -avL ./ /path/to/your/destination/

这样会把所有内容都复制过去,同时保证LATEST链接依然指向目标目录里的file1。

内容的提问来源于stack exchange,提问作者darecoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 11:27:40