Permissions

rsync 命令不保留權限

  • September 15, 2015

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命令中進行哪些修改才能保留權限。

正如評論中提到的,遠端 rsync 程序需要以超級使用者權限執行才能保留權限。如果您在遠端伺服器上具有 sudo 訪問權限,則可以使用該--rsync-path選項以 root 身份執行 rsync:

rsync -av --rsync-path "sudo rsync" source/ server:/destination/

引用自:https://unix.stackexchange.com/questions/229779