rsync:chgrp“/backup/sql_backup/.backup-20210817mysql.tar.gz.nWPkhd”(在我的应用程序中)失败:不允许操作(1)

rsync:chgrp“/backup/sql_backup/.backup-20210817mysql.tar.gz.nWPkhd”(在我的应用程序中)失败:不允许操作(1)

用户:-根

/usr/bin/rsync -hprltaq --include '*/' --include '*.gz' --exclude '*' "/var/cache/backup/backup-20210817mysql.tar.gz" <storage_IP>::my-app/backup/sql_backup/

错误:-->

rsync: chgrp "/backup/sql_backup/.backup-20210817mysql.tar.gz.nWPkhd" (in my-app) failed: Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1196) [sender=3.1.2]

即使 rsync 抛出错误,文件也会被复制到目的地(存储服务器)。

存储服务器上的权限

ls -al backup/
drwxr-xr-x  9 nobody nogroup  4096 Oct  3  2020 .
drwxr-xr-x 81 nobody nogroup 12288 Aug 17 08:00 ..
drwxrwxrwx  2 nobody nogroup 4.0K Aug 17 12:54 sql_backup

我也尝试过 777 权限但得到同样的错误。

答案1

您指定的-a( )标志包括将目标文件/目录的所有者和组设置为源项目的所有者和组的请求。存储服务器似乎没有以 root 身份运行 rsync 服务,并且运行该服务的用户不是拥有源文件的组的成员。--archiversync/var/cache/backup/backup-20210817mysql.tar.gz

我可以看到三种可能的解决方案,

  1. 测试存储服务器的文件系统中是否具有可用的扩展属性,如果有,则使用它们来存储所有者/组和其他有用的元数据

     rsync -M--fake-super --numeric-ids -ahq ...
    

    这将是最好的解决方案。要保存和恢复文件,请始终包含-M--fake-super--numeric-ids.

  2. 从写入存储服务器的元数据中删除所有者/组身份。然后您将负责“手动”恢复此

     rsync -ahq --no-o --no-g ...
    
  3. 以 root 身份在存储系统上运行该服务。这以基于 Linux/UNIX 的操作系统为前提,您可以更改服务所有者,并且您对风险感到满意。不推荐,但只是列为一种可能性。

相关内容