我正在测试我是否使用了正确的选项,rsync
因为我想将大量文件从旧服务器复制到新服务器并保持准确的权限。
在旧服务器上,文件存在如下:
$ ll -n
total 0
-rw-r--r-- 1 1002 1000 0 Jan 9 22:56 testfile
然后我用rsync
这样复制文件:
$ rsync -e ssh -avP . 10.10.10.254:/home/someuser/test
Enter passphrase for key 'newserver.key':
sending incremental file list
./
testfile
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/2)
sent 125 bytes received 34 bytes 28.91 bytes/sec
total size is 0 speedup is 0.00
在新服务器上,没有 ID 为 1002 的用户,也没有同名用户。该文件是这样创建的:
$ ll -n
total 0
-rw-r--r-- 1 10001 10001 0 Jan 9 23:56 testfile
我想知道为什么文件不是用 ID 1002 1000 创建的,因为-a
(archive) 选项包括-o
(owner)、-g
(group) 和-p
(permissions) 并且手册页说
如果用户或组在源系统上没有名称,或者在目标系统上没有匹配项,则使用源系统中的数字 ID。
即使我手动添加--numeric-ids
开关(我实际上不想要),结果也只是
$ ll -n
total 0
-rw-r--r-- 1 10001 1000 0 Jan 9 23:56 testfile
所以它只保留了 GID,而不是 UID
rsync
必须root
在目标机器上以特权运行。选项1:为用户启用SSH登录,
root
然后指定root@<IP>
登录。选项 2:使用
rsync
with ,sudo
如本问题所述。