我正在尝试使用 '/nas' 上 NFS 挂载卷上的简单 rsync 备份我的整个服务器
这是我的 rsync 命令
rsync -sav -S --stats -H --numeric-ids --delete -D
--exclude-from="/usr/local/bin/rsync_nas1_exclude" / /nas1/
出现以下错误:
rsync: chown "/nas1/home/8003/.local/share/icons/application-x-wine-extension-its.png"
failed: Invalid argument (22)
或者
rsync: chown "/nas1/home/8003/.local/share/applications/wine/Programs/FxPro - Trader" failed: Invalid argument (22)
知道为什么吗?我使用 '-s' 参数来保护文件名
答案1
错误出现在 上chown
。我的猜测是:您的目标 NFS 挂载是不支持 的 FAT32 或 NTFS 卷chown
。您有两个选择:使用 Linux 文件系统(如 ext3)对其进行格式化,或者完全放弃权限和所有者(--no-owner --no-group
rsync 选项)。
答案2
我很长时间以来一直遇到同样的问题,但看不到解决方案。问题似乎是 NFS 不允许你将文件的 UID/GID 更改为服务器上不存在的 UID/GID:
# for a local file, it works fine:
rena@akira:~ $ sudo chown -v 999:999 testfile
changed ownership of `testfile' to 999:999
# but if the file is on an NFS share, it fails:
rena@akira:/mnt/yuki $ sudo chown -v 999:999 testfile
chown: changing ownership of `testfile': Invalid argument
failed to change ownership of `testfile' to 999:999
这似乎是 NFS 的一个设计缺陷;您无法使用它来备份服务器上不存在的人拥有的文件。但也许有办法禁用此检查?
答案3
就我而言,问题出在 NFS 版本上。使用 NFSv4 时,不允许使用服务器端不存在的 uid/gid,而 NFSv3(只要使用 导出no_root_squash
)则不介意。因此,在我添加vers=3
到 rsync 中的挂载选项后/etc/fstab
,就可以正常 chown 了。