在 Debian(以及其它 Linux 发行版)里,“软连接(符号链接,symbolic link)”本身只是文件,迁移时需要注意它指向的路径是否仍然有效。下面按常见场景说明。
cp -a /old/path/link /new/path/
或
rsync -a /old/path/link /new/path/
✅ -a 会保留:
⚠️ 软连接指向的路径不会自动修改
mv /old/path/link /new/path/
软连接内容不变,仍指向原来的目标。
ls -l /new/path/link
示例:
link -> /data/old/file
如果目标路径不存在:
readlink -f /new/path/link
rm /new/path/link
ln -s /new/target/path /new/path/link
例如:把 /opt/old/* 下的软连接迁移到 /opt/new/,并修改指向
for l in /opt/old/*; do
[ -L "$l" ] || continue
target=$(readlink "$l")
newtarget=${target/old/new}
ln -s "$newtarget" "/opt/new/$(basename $l)"
done
rsync -a 或 tar -h(不推荐 -h,会展开软连接)scp 单个软连接而不带 -p| 问题 | 原因 |
|---|---|
| 软连接变红 | 指向路径不存在 |
| 权限不足 | 目标目录无读权限 |
| 循环软连接 | 指向自身或父目录 |
如果你能说明:
我可以给你更精确的命令。