testing用例
想象一下,我有一个链接指向这样一个文件:
/用户A /文件/普通/ test_file里面
/ usera / files / common / links / test_link – > / usera / files / common / test_file
现在我想rsync common到另一个位置的整个目录。 (组权限适应,请看下面的原因)
rsync -av -no -g / usera / files / common / / userb / common
这给了我:
/用户B /普通/ test_file里面
/ userb / common / links / test_link – > / usera / files / common / test_file
问题
问题是目标上的组不同于源(安全原因),因此test_link不指向/userb/ space,而是指向/usera/ ,因此对于该用户不可读。
题
是否有可能告诉rsync修改同步点( /common/ here)下的链接以适应新的目的地? 这会给这样一个链接:
/ userb / common / links / test_link – > / userb / common / test_file
我试图解决类似的问题 ,但它似乎并没有做我想要的..
谢谢!
Rsync不支持。 它可以被修改,但rsync已经有太多的select。 你可以通过在rsync之后执行这个来实现你的目标:
find /tmp/userb -type l -ls | awk '$13 ~ /^\/tmp\/usera/ { sub("/tmp/usera/files/", "/tmp/userb/", $13); print $11, $13 }' | while read AB; do rm $A; ln -s $B $A; done