rsync 权限被拒绝将远程目录备份到我的本地计算机

Mou*_*inX 12 rsync file-permissions

我收到标题中提到的错误。

我发现了这个类似的问题:Run rsync with root permission on remote machine。那不能回答我的问题。

我是远程服务器上的管理员,我想用它rsync来将文件备份到我的本地机器上。这是我的 rsync 命令:

$ rsync -avz me@myserver.com:/var/www/ /backups/Sites/MySite/
Run Code Online (Sandbox Code Playgroud)

它主要是有效的。登录是通过密钥对进行的。我没有也不能使用密码(编辑:通过 SSH 登录)。由于权限,只有少数文件不会传输。我不想更改这些权限。

这是错误:

receiving file list ... done
rsync: send_files failed to open "/var/www/webapp/securestuff/install.php": Permission denied (13)
Run Code Online (Sandbox Code Playgroud)

不是想改变这个文件的权限。它(以及其他类似的)不应该是可读的(root 除外)。

这必须在 cron 作业中运行,我更喜欢仅使用 rsync 命令的简单单行解决方案。下一个选择是我可以从 cron 作业调用的 shell 脚本。在任何情况下,我都不能手动登录远程机器并成为 root(因为运行时我会睡觉。

如何使用 rsync 将其备份到我的本地机器上?

use*_*686 8

你可以不备份,你不能以其他方式读取文件,因此权限不得不要么改变由根重写

更详细的选项:

  • root@myserver.com直接通过 rsync'ing 覆盖权限。(

  • ...或者通过在服务器上配置sudo以允许无密码运行rsync服务器端组件。

    me    ALL=(root) NOPASSWD: /usr/bin/rsync --server --sender -vlogDtprze.iLsf . /var/www/
    
    Run Code Online (Sandbox Code Playgroud)

    rsync --rsh="ssh me@myserver.com sudo" -avz /var/www/ /backups/...
    
    Run Code Online (Sandbox Code Playgroud)
  • 在服务器上创建一个专用的“网站备份”帐户。更改文件的权限,使其对“网站备份”帐户可读;您可以setfacl为此使用 ACL 。请勿将此帐户用于其他任何用途。

    rsync -avz website-backup@myserver.com:/var/www/ /backups/sites/mysite/
    
    Run Code Online (Sandbox Code Playgroud)
  • 在服务器上编写一个脚本,将 /var/www/ 转储到加密的 tarball 中。同样,这可以以 root 身份(通过 crontab)或通过将sudo配置为不需要该脚本的密码来完成。例如:

    #!/bin/sh
    tar c /var/www/ | gpg -e -r mountainx@example.com
    
    Run Code Online (Sandbox Code Playgroud)

    每次都通过拉取整个 tarball 来完成备份,这对于大型站点来说可能效率低下:

    ssh me@myserver.com "sudo /usr/sbin/dump-website" > /backups/sites/mysite.tar.gpg
    
    Run Code Online (Sandbox Code Playgroud)

    通过编辑sudoers将删除密码要求:

    me     ALL=(root) NOPASSWD: /usr/sbin/dump-website
    
    Run Code Online (Sandbox Code Playgroud)


alt*_*as5 6

在远程主机中,您可以运行 rsync 守护进程

用户名根

/etc/rsyncd.conf文件中。

这将允许守护程序使用该CAP_DAC_OVERRIDE功能并读取本地文件系统而无需更改权限/所有权。

如果您只需要进行备份,最好将 rsync 设置为只读模式:

只读 = 真