Linux

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

  • August 17, 2021

使用者:- 根

/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 權限,但得到了同樣的錯誤。

您指定的-a( ) 標誌包括將目標文件/目錄的所有者和組設置為源項目的所有者和組的請求。似乎儲存伺服器沒有以 root 身份執行 rsync 服務,並且執行它的使用者不是擁有源文件的組的成員。--archive``rsync``/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 ...
  1. 以 root 身份在儲存系統上執行該服務。這以基於 Linux/UNIX 的作業系統為前提,您可以更改服務所有者,並且您對風險感到滿意。不推薦,但只是列為一種可能性。

引用自:https://unix.stackexchange.com/questions/665002