루트로 실행되는 셸 스크립트를 통해 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 하드 드라이브를 참조하며, 지금은 akira에 직접 연결되지 않고 yuki에 연결되고 nfs를 통해 공유됩니다. 디스크는 ext3을 사용하며 Truecrypt로 암호화됩니다.
유키의 /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)의 이름 확인 문제인 것 같습니다.
- 호스트의 이름 확인이 file first로 설정되어 있는지 확인하세요.
/etc/nsswitch.conf
- 있는 경우
/etc/host.conf
구문 분석 순서가 다음과 같이 설정되어 있는지 확인하세요.order hosts bind
- 클라이언트의 IP를
/etc/hosts
NFS 서버에 넣습니다. 짧은 이름이 IP 다음의 첫 번째 항목인지 확인하세요.
답변2
NFSv4가 아니라고 가정하면 익명 공유를 수행하는 것으로 보이며 기본적으로 일치하는 uid/gid가 없으므로 하나/그룹이 할당되지 않습니다.