rsync
文件传输后不保留权限/所有权。这是场景
源主机(192.168.2.14
从其中复制文件):
源路径
# ls -l "/shareddata/tesz/"
total 4
drwxrwsr-x 2 root admin 4096 Sep 15 19:38 web
# ls -l /shareddata/tesz/web/
total 0
-rw-rw-r-- 1 askar admin 0 Sep 15 19:38 test1
-rw-rw-r-- 1 dey admin 0 Sep 15 19:38 test2
目的地路径:
# ls -ld /shareddata/
drwxrwxr-x. 4 root admin 4096 Sep 15 19:44 /shareddata/
rsync
我们尝试复制文件的命令是.该脚本在fsync
用户下运行
$ id fsync
uid=700(fsync) gid=502(admin) groups=502(admin)
/usr/bin/rsync -rogp 192.168.2.14:/shareddata/tesz /shareddata/
/usr/bin/rsync -av 192.168.2.14:/shareddata/tesz /shareddata/
我们正在rsync
从文件复制到的目标主机运行命令。但我们可以看到文件传输后权限/所有权没有得到保留
$ ls -l /shareddata/
total 8
drwxrwsr-x 3 fsync admin 4096 Sep 15 19:44 tesz
$ ls -l /shareddata/tesz/
total 4
drwxrwsr-x 2 fsync admin 4096 Sep 15 20:29 web
$ ls -l /shareddata/tesz/web/
total 0
-rw-rw-r-- 1 fsync admin 0 Sep 15 20:29 test1
-rw-rw-r-- 1 fsync admin 0 Sep 15 20:29 test2
我需要在命令中进行哪些修改rsync
才能保留权限。
答案1
正如评论中提到的,远程 rsync 进程需要以超级用户权限运行才能保留权限。如果您在远程服务器上具有 sudo 访问权限,则可以使用该--rsync-path
选项以 root 身份运行 rsync:
rsync -av --rsync-path "sudo rsync" source/ server:/destination/