Linux
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 權限,但得到了同樣的錯誤。
您指定的
-a
( ) 標誌包括將目標文件/目錄的所有者和組設置為源項目的所有者和組的請求。似乎儲存伺服器沒有以 root 身份執行 rsync 服務,並且執行它的使用者不是擁有源文件的組的成員。--archive``rsync``/var/cache/backup/backup-20210817mysql.tar.gz
我可以看到三種可能的解決方案,
- 測試儲存伺服器在其文件系統中是否具有可用的擴展屬性,如果是,則使用它們來儲存所有者/組和其他有用的元數據
rsync -M--fake-super --numeric-ids -ahq ...
這將是最好的解決方案。要保存和恢復文件,請始終包含
-M--fake-super--numeric-ids
. 2. 從寫入儲存伺服器的元數據中刪除所有者/組身份。然後,您將負責“手動”恢復rsync -ahq --no-o --no-g ...
- 以 root 身份在儲存系統上執行該服務。這以基於 Linux/UNIX 的作業系統為前提,您可以更改服務所有者,並且您對風險感到滿意。不推薦,但只是列為一種可能性。