如何同步/home/userA/transfer 和/home/userB/transfer?
我尝试创建一个符号链接。
ln -s /home/userA/transfe /home/userB/transfer
符号链接不起作用...
lrwxrwxrwx 1 centos centos 40 Feb 12 19:55 transfer -> /home/userB/transfer
答案1
用户的主目录对其他用户的访问很挑剔。主目录下的所有内容都应该由该主目录的用户拥有。您可能面临权限问题,因此符号链接绝对是错误的方式。如果您不想要实时同步而只是不时进行同步,您应该有权访问这两个目录,最可能的选择是能够成为超级用户。然后您可以执行同步并恢复自然所有权。这是你可以走的路:
id userB # figure out the group of the userB, suppos the output is groupB
sudo -i # become a superuser
rsync -aP /home/userA/transfer/ /home/userB/transfer/ #sync using rsync
chown -R userB.groupB /home/userB/transfer # restore ownership
如果这对您有用,则可以将其优化为非交互式单行命令:
sudo bash -c "rsync -a /home/userA/transfer/ /home/userB/transfer/ && chown -R userB.$(id -gn userB) /home/userB/transfer/"
更新一个例子:
→ sudo ls -al /home/joker/trans/
total 8
drwxrwxr-x. 2 joker joker 4096 Feb 12 20:44 .
drwx------. 9 joker joker 4096 Feb 12 20:33 ..
-rw-rw-r--. 1 joker joker 0 Feb 12 20:33 file1
-rw-rw-r--. 1 joker joker 0 Feb 12 20:33 file2
→ sudo ls -al /home/vagrant/trans/
total 8
drwxrwxr-x. 2 vagrant vagrant 4096 Feb 12 20:33 .
drwx------. 4 vagrant vagrant 4096 Feb 12 20:34 ..
-rw-rw-r--. 1 vagrant vagrant 0 Feb 12 20:33 file1
→ sudo bash -c "rsync -aP /home/joker/trans/ /home/vagrant/trans/ && chown -R vagrant.$(id -gn vagrant) /home/vagrant/trans"
sending incremental file list
./
file2
0 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/3)
这里,用户joker的trans子目录已同步到用户vagrant。尝试与您的用户一起重现并查看差异。 (小丑有 sudo 权限)
(*) 注意 rsync 命令中的尾部斜杠,它们很重要