Rsync从一台服务器到另一台的权限 – Mkdir权限被拒绝(13)

我正在尝试使用rsync将本地计算机上的备份文件夹每天复制到另一台计算机(在数据丢失或意外删除的情况下)。 这作为一个cronjob运行。

我只是命令

rsync -av --rsh='ssh -p90' --delete /backup/ [email protected]:~/dabackup/ 

从服务器1( tent )上的root帐户。

但是,在第一台服务器上,每个子目录的权限都是设置好的,除非你是root用户(对文件夹没有执行权限),否则你不能进入它们,这是我不能轻易改变的,因为它是备份软件作品。

这意味着在第二台服务器( mydomain.com )帐户tentbackup没有权限进入rsync正在创build的文件夹导致以下错误

 root@tent:~$ rsync -av --rsh='ssh -p92' --delete /backup/ [email protected]:~/dabackup/ building file list ... done 03-05-11/apache/ rsync: recv_generator: mkdir "/home/tentbackup/dabackup/03-05-11/apache" failed: Permission denied (13) *** Skipping any contents from this failed directory *** 03-05-11/bind/ rsync: recv_generator: mkdir "/home/tentbackup/dabackup/03-05-11/bind" failed: Permission denied (13) *** Skipping any contents from this failed directory *** 03-05-11/custom/ rsync: recv_generator: mkdir "/home/tentbackup/dabackup/03-05-11/custom" failed: Permission denied (13) etc... 

我可以使用[email protected]server two )解决这个问题,但显然我不想为server onetent )上存储的根帐户的ssh密钥。

我如何安全地允许rsync权限来创build这些子文件夹和文件?


即使直接login到服务器2作为tentbackup,我不能移动到目录或在其中创build文件

 tentbackup@brave:~/dabackup$ cd 03-20-11/ bash: cd: 03-20-11/: Permission denied tentbackup@brave:~/dabackup$ mkdir 03-20-11/test -p mkdir: cannot create directory `03-20-11': Permission denied tentbackup@brave:~/dabackup$ touch 03-20-11/test touch: cannot touch `03-20-11/test': Permission denied 

这样做的正确方式(虽然它确实改变了权限,所以如果这些权限很重要的话,不能从备份中恢复)是将以下内容添加到你的rsync命令

 --no-p --no-g --chmod=ugo=rwX 

哪里

--no-p禁用权限复制

--no-g禁用组复制和

--chmod=ugo=rwX确保所有非屏蔽位被启用

您正在尝试执行某些被设置权限禁止的操作。 您必须更改设置的权限或给您的程序特殊权限。 一个修复可能是在修复目录权限的服务器上创build一个cron作业。 或者,你可以有一个以root身份运行的程序,等待来自ssh脚本的命令并修复目录权限。

你应该可以通过从rsync中删除-a标志并使用你需要的任何标志来代替。 从configuration逻辑上来说,您不希望以root身份执行此操作,这意味着您需要忽略目标端的权限。 确保你在rsync命令中不包含-p,你应该能够安全地将文件从root @ serverone复制到user @ servertwo,它应该能够创builddirs等。只要记住你的权限树不会是那么在servertwo如果你需要从备份恢复,这应该是很容易编写一个脚本来解决我希望。

否则,你将需要特殊的访问来创build和pipe理servertwo上的文件,你可以通过设置rsyncd.conf和在守护进程模式下使用rsync来实现这一点,所以你不需要在两个主机之间允许ssh这个问题可能是其他用户访问主机,所以可能不够安全)。