我正在迁移文件系统,需要更新数千个符号链接,这些链接会因迁移而中断。我的计划是找到所有受影响的链接并构建一个处理每个链接的脚本。例如:
ln -nsf "$(readlink "./somelink1" | sed "s|oldpath|newpath|") "$(echo "./somelink1" | sed "s|oldpath|newpath|")"
ln -nsf "$(readlink "./somelink2" | sed "s|oldpath|newpath|") "$(echo "./somelink2" | sed "s|oldpath|newpath|")"
我需要以 root 身份运行该脚本,但是,这似乎会将所有链接的所有权更改为 root:root。有没有办法可以更新链接并保留现有的 UID:GID?我确信我可以在枚举链接时捕获所有权并添加命令来 chown 每个链接,但我想知道是否有更好的方法来保留所有权?