我在使用 rsync 时遇到了问题;以下是详细信息。
这个家庭有两个用户:john 和 mary。john 和 mary 各自拥有一个运行 Ubuntu MATE 版本 18.04.2 的台式机系统。还有一台笔记本电脑,也运行 MATE 18.04.2。当 MATE 安装到笔记本电脑上时,john 是原始用户;然后他将 mary 添加为第二个用户。
john 和 mary 都希望将笔记本电脑 /home/xxxx 数据文件与台式机系统保持同步。john 在他的台式机上使用 rsync 脚本 (不是以 sudo 身份运行)使用以下形式的命令:
目录:
rsync -e ssh -vaz --delete /home/john/funds/ laptop:/home/john/funds/ 1>>/home/john/backup/laptop.out 2>>/home/john/backup/laptop.error
文件:
rsync -e ssh -vaz --delete /home/john/swapfix laptop:/home/john/ 1>>/home/john/backup/laptop.out 2>>/home/john/backup/laptop.error
一切正常:文件已正确同步,没有报告错误。
Mary 还在她的桌面上使用 rsync 脚本,命令类似上述内容:
rsync -e ssh -vaz --delete /home/mary/funds/ laptop:/home/mary/funds/ 1>>/home/mary/backup/laptop.out 2>>/home/mary/backup/laptop.error
&
rsync -e ssh -vaz --delete /home/mary/swapfix laptop:/home/mary/ 1>>/home/mary/backup/laptop.out 2>>/home/mary/backup/laptop.error
这确实不是工作。错误报告文件很长,并显示一个又一个条目(但不是每个条目),其中显示“失败:权限被拒绝(13)”,以及偶尔出现的“操作不允许(1)”。
这就是所谓的将文件从源桌面系统“推送”到笔记本电脑。然而,真正有效的是使用笔记本电脑上的脚本“拉取”文件,命令如下:
rsync -e ssh -vaz --delete lynn@lynn:/home/lynn/funds/ /home/lynn/funds/ 1>>/home/lynn/backup/laptop.out 2>>/home/lynn/backup/laptop.error
&
rsync -e ssh -vaz --delete lynn@lynn:/home/lynn/swapfix /home/lynn/ 1>>/home/lynn/backup/laptop.out 2>>/home/lynn/backup/laptop.error
使用笔记本电脑的“拉”功能似乎可以满足需求,但我更希望这两个系统能够以相同的方式工作,另外我想知道为什么对约翰的台式机有效的方法对玛丽的台式机却无效。
(我在台式机和笔记本电脑上的 mary 主目录中运行了 ls -a -l,权限似乎相同。)
我推测当笔记本电脑作为远程目标时,其上的 rsync 没有权限写入 mary 的 /home/mary 目录,但我真不知道为什么。
请问有什么帮助吗?
答案1
我注意到,在推送方法中,您没有指定远程系统的用户名(laptop:/home/mary),而在拉取方法中,您指定了一个用户(lynn@lynn:/home/lynn)。
您可以尝试将用户名添加到推送命令并看看其如何工作吗?
台式机和笔记本电脑上的 John 和 Mary 的 uid 号是否相同?如果 John 的 uid 号相同而 Mary 的 uid 号不同,则这可能是导致问题的原因。当两个系统上的 uid 不同时,我遇到了文件所有权和权限问题。当我设置用户时,我已强制所有系统上的用户名和 uid 相同。这可能不是必需的,也不是最好的,但它似乎对我有用。