在 Ubuntu(及其他 Linux 系统)中,**软链接(symbolic link,软连接)**本身只是一个指向文件/目录的特殊文件。备份软链接时,关键有两点:
下面按常见场景说明。
cp 备份(保留软链接)cp -a /path/src /path/backup
或
cp -P /path/src /path/backup
说明:
-a:归档模式(保留权限、时间戳、软链接等)-P:不跟随软链接(默认 cp 会跟进去)❌ 错误示例(会变成复制目标文件):
cp /path/src /path/backup
rsync 备份(推荐)rsync -a /path/src/ /path/backup/
说明:
-a = -rlptgoDrsync 不会展开软链接rsync -aL /path/src/ /path/backup/
(-L 会跟随软链接)
tar 打包备份(最常用)tar -czvf backup.tar.gz /path/to/dir
tar 默认就会保留软链接
tar -tvf backup.tar.gz | grep yourlink
例如你有一堆软链接:
find /path -type l > symlinks.txt
恢复时:
while read link; do
src=$(readlink "$link")
ln -s "$src" "$link"
done < symlinks.txt
适合:
find /path -xtype l
| 场景 | 推荐方式 |
|---|---|
| 整机/目录备份 | rsync -a |
| 打包迁移 | tar -czvf |
| 仅保留链接关系 | find -type l |
| Docker / 配置备份 | cp -a |
如果你能说一下:
我可以给你更精确的命令。