我正在尝试将我的网站数据迁移到新服务器并不断收到此错误。我设置了公钥访问并能够使用 .txt 文件完成 rsync,然后我想尝试一个目录,但它不起作用。这是我第一次使用 rsync,因此如果您需要更多信息,请告诉我。
编辑:两者都是远程服务器,旧的是 Ubuntu 14.04.4,新的是 Ubuntu 18.04.3
我对每个目录都有 sudo 权限,但我可能不拥有我要移动的目录。我不知道如何找到答案。
$ rsync -rt /var/www [email protected]:/home
rsync: recv_generator: mkdir "/home/www" failed: Permission denied (13)
*** Skipping any contents from this failed directory ***
rsync: readlink_stat("/var/www/vhosts/testing.site.org/wp-config.php") failed: Permission denied (13)
rsync: readlink_stat("/var/www/vhosts/testing.site.org/wp-mail.php") failed: Permission denied (13)
rsync: readlink_stat("/var/www/vhosts/testing.site.org/wordpress") failed: Permission denied (13)
rsync: readlink_stat("/var/www/vhosts/testing.site.org/wp-signup.php") failed: Permission denied (13)
rsync: readlink_stat("/var/www/vhosts/testing.site.org/wp-trackback.php") failed: Permission denied (13)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.0]
答案1
这部分在这里:
rsync: recv_generator: mkdir "/home/www" failed: Permission denied (13)
似乎说用户kiana
没有足够的权限/home
,以便写到它。
如何检查文件夹权限
ls -l | grep home
从远程服务器上执行/
应该可以告诉您谁拥有该文件夹以及它具有哪些访问权限。 -文件夹的标准home
是root:root
拥有它的755
文件夹权限(阅读更多关于此处的文件夹和文件权限)
$ ls -l | grep home
drwxr-xr-x 3 root root 4096 21 mar 14.24 home
root
此输出表明具有组的用户root
拥有文件夹 (d)home
并具有完全权限 (rwx),而该组的其他用户root
以及其他人具有读取/执行权限 (rx),但不具有读取/执行权限 (rx)写允许。
拥有 -rights 的用户sudo
意味着该用户在身份验证后可能暂时拥有 root 权限,这对于rsync
.
结论
由于您不是root
执行该操作的实际用户rsync
(出于安全原因,您不应该是),因此您没有/home
文件夹的写入权限。我建议您尝试将网络服务器数据保存在用户kiana
可以写入的另一个位置(例如/tmp/
等/opt/
)。
答案2
另一个解决方案是添加--rsync-path="sudo rsync"
rsync命令。那么你的下一个问题是,你无法在远程服务器上键入(没有 tty,没有交互式提示符)。至少有一个解决方法是暂时地在您的用户的 sudoers 行设置NOPASSWD:
(不安全:没有 sudo 密码!)。 rsync 命令运行后,您可以删除不安全的配置。
首先需要有人登录您的服务器才能滥用适度的sudo
不安全性。但要权衡利弊。
答案3
/home 目录权限通常只能由 root 写入。
例如,在我的机器上运行 ls 显示 root/root:
$ ls -laF /home
total 12
drwxr-xr-x 3 root root 4096 Aug 20 2018 ./
drwxr-xr-x 24 root root 4096 Sep 3 09:00 ../
最好的选择是通过 ssh 进入运行的机器,在 /home 中创建一个目录:
#Note the sudo, or you'd have to su to root
sudo mkdir /home/www
#Then change the ownership so the user kiana can write to it:
sudo chown kiana:kiana /home/www