我正在尝试通过以 root 身份运行的 shell 脚本,使用 rsync 将整个系统备份到外部磁盘:
#!/bin/bash
rsync -vSHPhhaX --numeric-ids --delete --exclude-from=/home/rena/.scripts/exclude-list / /home/rena/video/.backup/>/home/rena/video/.backup.log
该脚本在机器“akira”上运行。最初,/home/rena/video 是直接连接到 akira 的 USB 硬盘,脚本运行良好。
最近我移动了磁盘;现在它安装在另一台机器“yuki”的同一路径上,并通过 NFS 共享。所以 akira:/home/rena/video 仍然指同一个 USB 硬盘,只是现在它附加到 yuki 并通过 nfs 共享,而不是直接附加到 akira。该磁盘使用 ext3 并使用 Truecrypt 加密。
yuki 的 /etc/exports 是:
/home/rena akira(rw,subtree_check,nohide,no_root_squash) rei(rw,subtree_check,nohide,no_root_squash)
/home/rena/video akira(rw,subtree_check,nohide,no_root_squash) rei(rw,subtree_check,nohide,no_root_squash)
现在 rsync 为每个文件给出一个错误:
rsync: chown "/home/rena/video/.backup/boot/System.map-2.6.38-8-generic" failed: Invalid argument (22)
尽管被告知不要这样做,但 nfs 似乎正在“挤压”?
rena@akira $ stat /home/rena/video/.backup/boot/abi-2.6.38-10-generic
File: `/home/rena/video/.backup/boot/abi-2.6.38-10-generic'
Size: 730457 Blocks: 1440 IO Block: 65536 regular file
Device: 19h/25d Inode: 38822526 Links: 1
Access: (0644/-rw-r--r--) Uid: (65534/ nobody) Gid: (65534/ nogroup)
Access: 2011-10-19 22:17:12.000000000 -0600
Modify: 2011-06-28 13:19:43.000000000 -0600
Change: 2011-10-19 22:17:12.000000000 -0600
rena@yuki $ stat /home/rena/video/.backup/boot/abi-2.6.38-10-generic
File: `/home/rena/video/.backup/boot/abi-2.6.38-10-generic'
Size: 730457 Blocks: 1440 IO Block: 4096 regular file
Device: fc04h/64516d Inode: 38822526 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2011-10-19 22:17:12.000000000 -0600
Modify: 2011-06-28 13:19:43.000000000 -0600
Change: 2011-10-19 22:17:12.000000000 -0600
从 akira 开始,UID 和 GID 看起来不同;也许 rsync 失败的原因是什么?
[编辑] 事实上它看起来像《阿基拉》中的,每一个共享上的文件具有 UID 和 GID 65534/nobody。
答案1
这似乎是您的 nfs 服务器 (yuki) 上的名称解析问题。
- 确保主机的名称解析首先设置为文件
/etc/nsswitch.conf
- 如果存在,
/etc/host.conf
请确保解析顺序设置为:order hosts bind
- 将客户端的 IP 放入
/etc/hosts
NFS 服务器上。确保短名称是 IP 之后的第一个条目。
答案2
假设这不是 NFSv4,您似乎正在执行匿名共享,并且因为默认情况下没有匹配的 uid/gid,所以没有分配任何人/没有组。