# Linux Rsync 同步備份配置

#### **安裝Rsync**

**Client和Server安裝Rsync**

```
apt-get install rsync
```

#### **Server Rsync 設定**

**編輯`<strong>/etc/rsyncd.conf</strong>`**

```
[backup]
# target directory to copy
path = /backup
# hosts you allow to access
hosts allow = 10.0.0.5
hosts deny = *
list = true
uid = test1
gid = test1
read only = false
auth users = test1
secrets file = /etc/rsyncd.secrets
```

```
auth users 允許用戶

secrets file = 設定密碼
```

```
root@rsync:~# cat /etc/rsyncd.secrets
test1:test1pwd

使用者:密碼
新增權限chmod 600 /etc/rsyncd.secrets
```

**建立/backup資料夾和使用者test1**

```
# 建群組
groupadd test1

# 建使用者並指定群組
useradd -g test1 -s /usr/sbin/nologin -M test1

# 建立目錄並賦權
mkdir -p /backup
chown test1:test1 /backup
chmod 750 /backup

```

#### **Client 指令**

```
列出模組
root@synology:~# rsync -rtn rsync://test1@10.0.0.110
backup         
```

```
列出模組內檔案
root@synology:~# rsync -rtn rsync://test1@10.0.0.110/backup
Password:
```

**Client新增密碼檔自動輸入密碼**

```
新增/rsyncd.secrets ，輸入要讀取密碼
root@synology:~# cat /rsyncd.secrets
test1pwd
新增權限chmod 600 /rsyncd.secrets
```

**備份指令**

```
rsync -avz --chmod=Du+rwx --delete /volume1/homedata/jason --password-file=/rsyncd.secrets test1@10.0.0.110::backup
```

- **`-a`：archive 模式，保留權限、時間、符號連結等**
- **`-v`：顯示過程**
- **`-z`：壓縮傳輸（適合跨網路，但區域網路有時反而變慢）**
- **`--chmod=Du+rwx`：強制目錄允許 u+rwx**
- **`--delete`：刪除目標端多餘檔案**

**第一次使用為完整備份，之後依照參數為鏡像或增量備份(–delete刪除不存在，即為兩端鏡像)**

```
-v，-verbose增強可讀性

-q，-quiet忽略非錯誤信息

-no-motd忽略守護進程模式的MOTD信息（參見manpage告知）

-c，-checksum基於checksum校驗，而非mod-time和size

-a，-archive歸檔模式，和-rlptgoD（不要使用-H，-A，-X）參數相同

-no-OPTION關閉一些顯式的OPTION（比如-no-D）

-r，-recursive遞歸目錄

-R，-relative使用相對路徑

-no-implied-dirs不發送制定目錄的屬性，避免在目標使用-relative刪除連接重新傳輸文件

-b，-backup備份（查看-suffix＆-backup-dir）

-backup-dir = DIR基於DIR來創建備份的目錄結構

-suffix = SUFFIX制定備份的後最（默認~w / o -backup-dir）

-u，-update跳過接受端較新的文件

-inplace直接在文件上更新（SEE MAN PAGE）

-append直接追加文件

-append-verify和-append很像，只是用文件的較舊的那部份做校驗和

-d，-dirs僅傳輸文件而非遞歸

-l，-links將軟鏈接當作軟鏈接來拷貝

-L，-copy-links拷貝鏈接對應的文件或者目錄而非鏈接本身

-copy-unsafe-links僅不安全的鏈接才被拷貝

-safe-links忽略那些鏈接到目錄樹外的鏈接

-k，-copy-dirlinks將鏈接翻譯成其鏈接的目錄

-K，-keep-dirlinks將目錄鏈接在接收端轉換成目錄

-H，-hard-links保留硬鏈接

-p，-perms保留權限

-E，-executability保留文件的可執行性

-chmod = CHMOD改變文件或者目錄的權限

-A，-acls保留ACL（暗示-perms）

-X，-xattrs保留擴展屬性

-o，-owner保留所有者（僅限超級用戶）

-g，-group保留組

-devices保留設備文件（僅限超級用戶）

-specials保留特殊文件

-D和-devices -specials一樣

-t，-times保留修改時間

-O，-omit-dir-times在-times選項裡忽略目錄的時間

-super允許接受方執行那個一些超級用戶的活動

-fake-super通過xattrs來存儲和回復權限

-S，-sparse高效處理稀疏文件

-n，-dry-run只運行，不做改變

-W，-whole-file拷貝貝整個文件（沒有delta-xfer算法）

-x，-one-file-system不跨越文件系統

-B，-block-size = SIZE強制指定checksum的塊大小

-e，-rsh = COMMAND指定要使用的遠程shell

-rsync-path = PROGRAM指定遠程要運行的rsync路徑

存在如果接收端不存在文件就不創建
-ignore-existing如果接收端存在就不更新文件
-remove-source-files發送端刪除已經同步的文件（非dirs）
-del -delete-during的別名
-delete刪除接收端上在發送端不存在的文件
-delete-before接收端在發送前刪除，而不是發送過程中
-delete-during接收端在發送過程中刪除
-delete-delay在發送過程中尋找文件，在發送完成後刪除
-delete-after接收端在發送完成後刪除
-delete-excluded在接收端刪除排除的文件
-ignore-errors即使有I / O錯誤也刪除
-force即使目錄不是空的也刪除
-max-delete = NUM​​最多刪除文件的數目
-max-size = SIZE最大傳輸文件的大小
-min-size = SIZE最小傳輸文件的大小
-partial保持部分傳輸的文件
-partial-dir = DIR制定部分傳輸文件的存放目錄
-delay-updates先傳輸，最後再更新，保持原子性
-m，-prune-empty-dirs接收端刪除空目錄
-numeric-ids接收端不要將uid / gid映射為用戶名和組名
-timeout = SECONDS設置I / O超時時間，s為單位
-contimeout = SECONDS設置鏈接服務端的時間
-I，-ignore-times即使mtime和size都相同也不跳過
-size-only只要大小相同就跳過
-modify-window = NUM​​比對時間時制定精確範圍，範圍內都認為時間相同
-T，-temp-dir = DIR指定創建臨時文件的目錄
-y，-fuzzy文件在接收端不存在的情況下，在當前目錄下尋找一個基礎文件，以加快傳輸
-compare-dest = DIR接收端除了和發送端對比還和這裡指定的目錄對比，適合備份上次備份改變的文件
-copy-dest = DIR和-compare-dest類似，只是接收端會用本地拷貝來複製那些未改變的文件
-link-dest = DIR和-compare-dest類似，只是接收端會建立那些未改變文件的硬鏈接
-z，-compress傳輸過程中壓縮
-compress-level = NUM​​指定壓縮等級
-skip-compress = LIST不壓縮指定後綴的文件
-C，-cvs-exclude以CSV的方式自動忽略文件
-f，-filter = RULE新增一個文件過濾規則
-F與-filter =’dir-merge /.rsync-filter’重複相同：-filter =’ — .rsync-filter’
-exclude = PATTERN排除規則PATTERN
-exclude-from = FILE從文件中讀取排除規則
-include = PATTERN不要排除指定規則的文件
-include-from = FILE從文件中讀取包含的規則
-files-from = FILE從文件中讀取文件列表
-0，-from0 all
-from / filter文件由0分隔
-s，-protect-args參數不許要空格分割; 只有通配符特殊字符
-address = ADDRESS綁定監聽的地址
-port = PORT制定端口號
-sockopts = OPTIONS制定TCP選項
-blocking-io在遠程shell中使用阻塞I / O.
-stats給出文件統計信息
-8，-8-bit-output輸出時不對高位字符轉義
-h，-human-readable以易於閱讀的方式打印數字
-progress顯示傳輸進度
-P與-partial-progress相同
-i，-itemize-changes打印更新的總結信息
-out-format = FORMAT以特定的格式打印更新信息
-log-file = FILE日誌文件
-log-file-format = FMT日誌文件格式
-password-file = FILE密碼文件
-list-only僅列出文件
-bwlimit = KBPS限制帶寬; 每秒KBytes
-write-batch = FILE將批量更新寫入文件
-only-write-batch = FILE和-write-batch類似但沒有更新目的地
-read-batch = FILE從文件中讀取批量更新任務
-protocol = NUM​​使用舊版本的協議
-iconv = CONVERT_SPEC要求文件名字符轉義
-4，-ipv4更喜歡IPv4
-6，-ipv6更喜歡IPv6
-version打印幫助信息
（-h）-help打印這個幫組信息（-h僅在單獨使用時與-help同意）
```