linux使用rsync進行檔案同步

來源:互聯網
上載者:User
> 使用rsync從伺服器同步資料,這裡只說如何單向同步

首先安裝rsync

# 伺服器端配置
伺服器使用 `xinetd` 來充當`rsync`的精靈,沒有的話就安裝
> xinetd專門監聽某個設定的連接埠,然後fork出配置好的連接埠對應的服務程式,再繼續監聽

## 1. 配置rsync的xinetd設定檔:

# nano /etc/xinetd.d/rsync

service rsync
{
disable= no
flags= IPv4
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}

## 2.配置rsync自動啟動

# chkconfig rsync on

## 3.配置rsync

# nano /etc/rsyncd.conf

uid=root #運行RSYNC守護進程的使用者
gid=root #運行RSYNC守護進程的組
use chroot=no #不使用chroot
max connections=0 #最大串連數,0不限制
strict modes=yes #是否對密碼檔案進行許可權檢查,yes的話,其他使用者都不能訪問密碼檔案
prot=873 #監聽連接埠
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsync.lock
log file=/var/log/rsyncd.log

#備份模組
[backup]
path=/opt/backup
comment=backup files
auth users=backupuser #允許訪問的使用者,必須是密碼檔案中的
uid=root
gid=root
secrets file=/etc/rsyncd.secret # 密碼檔案
read only=no
list=no

## 4.確認一下`/etc/services`中的rsync連接埠號碼是否和它設定檔中的一樣

# less /etc/services

...
rsync 873/tcp # rsync
rsync 873/udp # rsync
....

## 5.配置密碼檔案

# nano /etc/rsyncd.secret

# 格式為使用者名稱:密碼
backupuser:passwd

改變密碼檔案許可權

# chmod 400 /etc/rsyncd.secret

## 6.啟用`xinetd`

# /etc/init.d/xinetd restart

然後檢查一下看是否正常啟動:

# lsof -i :873
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
xinetd 4396 root 5u IPv4 633387 TCP *:rsync (LISTEN)

# 用戶端配置
用戶端只需要安裝有`rsync`即可

## 1.配置密碼檔案

# nano /etc/rsyncd.secret

# 只要求輸入密碼
passwd

設定好許可權

# chmod 600 /etc/rsyncd.secret

## 2.從伺服器同步

# rsync -avz --password-file=/etc/rsyncd.secret backupuser@192.168.1.2::backupuser /opt/backup/

# 小結

可以在用戶端把同步指令碼放到corntab裡來定時同步資料

## 常用的全域選項
**motd file**:設定歡迎訊息

**pid file**:該選項告訴daemon把它的進程ID寫入指定檔案。如果檔案已經存在,daemon會中止運行,而不是覆蓋原檔案。

**port**:設定daemon運行監聽的連接埠。如果daemon是由inetd運行,該選項將被忽略;如果命令列中已經指定--port,該選項將被取代。

**address**:設定rsync daemon運行時監聽的地址。同上,如果daemon由inetd運行或命令列中已經指定了--port,該選項將被忽略或取代。

## 模組參數
**path**:設定該模組的目錄位置

**use chroot**:指定是否使用chroot,值為yes或no,我推薦no

**max connections**:該參數設定了daemon允許每個client發起的最大串連數。超過最大串連數,client會收到警告資訊,值為0表示不限制,值為負數表示禁用該模組

**lock file**:該參數用來支援max connection,它指定一個檔案來記錄client的請求,以確保client的請求不會突破最大串連數

**log file**:設定該模組的log檔案的位置,如果此參數未設定,或rsync daemon讀取指定檔案失敗,rsync會使用syslog記錄日誌;如果此參數只在每個模組中設定,而未在全域中設定,則全域日誌將只記錄授權失敗或設定檔錯誤的訊息

**read only**:設定是否允許用戶端上傳檔案,預設為yes,不允許上傳檔案

**write only**:設定是否允許用戶端下載檔案,預設為no,允許下載檔案(有點拗口)

**list**:設定該模組是否允許被列出,有點類似於samba的browseable,預設為yes,我們可以把它設定為no,來建立一個隱藏模組

**uid**:當rsync daemon以root使用者運行時,此參數指定了,向該模組傳輸檔案,或從該模組傳輸檔案時的使用者身份(使用者名稱或使用者ID),預設為-2,即nobody使用者

**gid**:意義類似於uid,預設為-2,即nobody組

**incoming chmod**:這個參數允許你指定多個以逗號分隔的許可權字元,這些許可權會影響所有daemon收到的檔案。這些許可權會在其它所有許可權之後生效,這意味著,如果用戶端沒有指定--perms,它們會覆蓋掉目標預設和(以及或)已經存在的許可權。

**auth users**:這個參數指定了允許訪問該模組的使用者列表,列表中的使用者名稱以逗號和空格分隔。指定使用者可以不必真實存在於本地系統,使用者名稱中也可以包含shell萬用字元。純文字的使用者名稱和密碼儲存在由”secrets file”參數指定的檔案中。

**secrets file**:該參數指定一個密碼檔案,用於該模組的授權驗證。只有當指定了”auth users”參數時,這個檔案才會被考慮。密碼可以包含任何字元,最好不要超過8個字元。該參數沒有預設值,你必須手動建立一個密碼檔案,而且該檔案不應該被其它使用者訪問。

**strict modes**:該參數決定了是否對密碼檔案進行許可權檢查。如果值為yes,除了運行rsync daemon的使用者外,其它使用者均不能訪問該檔案。預設值為yes。

**fake super**:如果該模組設定成fake super = yes,跟在命令列中指定了--fake-super效果一樣。它不需要daemon以root運行,就可以隱藏檔的完整屬性。
**hosts allow**:簡單的說,該參數指定了允許訪問該模組的用戶端名稱或IP。可以指定一個具體的IP,或配合掩碼指定一個IP段。當hosts allow和hosts deny同時指定的時候,先檢查hosts allow,匹配的用戶端將被允許訪問該模組;然後檢查hosts deny,匹配的用戶端將被拒絕;既不匹配hosts allow又不匹配hosts deny的用戶端將被允許訪問。

**hosts deny**:該參數指定的用戶端均不允許訪問該模組。

**ignore errors**:如果該參數被指定,在進行傳輸中的刪除操作時,rsync將忽略掉daemon的I/O錯誤。通常情況下,如果發生任何I/O錯誤,rsync將忽略掉--delete操作,以防止由於臨時資源短缺或其它I/O錯誤而導致的災難性(檔案)丟失。

**timeout**:rsync的逾時設定,防止用戶端的死串連,單位為秒。預設值為0,意味著沒有逾時定義。

**dont compress**:此選項允許指定一些基於萬用字元模式的檔案名稱,當從daemon拉檔案時,這些檔案將不會被壓縮。選項接受一個以空格分隔的,大小寫敏感的萬用字元模式列表。類似於命令列中的--skip-compress=LIST,並且會覆蓋命令中的參數。

**filter**:該參數接受一個由空格分開的daemon過濾規則列表,每個模組只接受一個filter參數,所以要把所有規則寫入一個filter參數中。可以使用正常文法把一個或多個merge-file指定成一條規則。

**exclude**:該參數接收一個以空格分隔的daemon排除規則的列表,像用戶端的--exclude選項一樣,它使用”-“或”+”來指明排除或包含。一個模組中只能有一個exclude參數。

**include**:該參數可以覆蓋掉exclude的效果。一個模組中只能有一個include參數。

**exclude from**:該參數指定了一個daemon上的檔案,用來包含daemon的排除規則,每行一條(規則)。每個模組中只能有一個exclude from參數,如果有多個exclude-from檔案,可以在filter參數中把它們看成成一個merge file。

**include from**:類似於exclude from。

## rsync 命令參數
**-v**, --verbose 詳細模式輸出

**-q**, --quiet 精簡輸出模式

**-c**, --checksum 開啟校正開關,強制對檔案傳輸進行校正

**-a**, --archive 歸檔模式,表示以遞迴方式傳輸檔案,並保持所有檔案屬性,等於-rlptgoD

**-r**, --recursive 對子目錄以遞迴模式處理

**-R**, --relative 使用相對路徑資訊

**-b**, --backup 建立備份,也就是對於目的已經存在有同樣的檔案名稱時,將老的檔案重新命名為~filename。可以使用--suffix選項來指定不同的備份檔案首碼。

**--backup-dir** 將備份檔案(如~filename)存放在在目錄下。

**-suffix=SUFFIX** 定義備份檔案首碼

**-u**, --update 僅僅進行更新,也就是跳過所有已經存在於DST,並且檔案時間晚於要備份的檔案。(不覆蓋更新的檔案)

**-l**, --links 保留軟鏈結

**-L**, --copy-links 想對待常規檔案一樣處理軟鏈結

**--copy-unsafe-links** 僅僅拷貝指向SRC路徑分類樹以外的鏈結

**--safe-links** 忽略指向SRC路徑分類樹以外的鏈結

**-H**, --hard-links 保留硬鏈結

**-p**, --perms 保持檔案許可權

**-o**, --owner 保持檔案屬主資訊

**-g**, --group 保持檔案屬組資訊

**-D**, --devices 保持裝置檔案資訊

**-t**, --times 保持檔案時間資訊

**-S**, --sparse 對疏鬆檔案進行特殊處理以節省DST的空間

**-n**, --dry-run現實哪些檔案將被傳輸

**-W**, --whole-file 拷貝檔案,不進行增量檢測

**-x**, --one-file-system 不要跨越檔案系統邊界

**-B**, --block-size=SIZE 檢驗演算法使用的塊尺寸,預設是700位元組

**-e**, --rsh=COMMAND 指定使用rsh、ssh方式進行資料同步

**--rsync-path=PATH** 指定遠程伺服器上的rsync命令所在路徑資訊

**-C**, --cvs-exclude 使用和CVS一樣的方法自動忽略檔案,用來排除那些不希望傳輸的檔案

**--existing** 僅僅更新那些已經存在於DST的檔案,而不備份那些新建立的檔案

**--delete** 刪除那些DST中SRC沒有的檔案

**--delete-excluded** 同樣刪除接收端那些被該選項指定排除的檔案

**--delete-after** 傳輸結束以後再刪除

**--ignore-errors** 及時出現IO錯誤也進行刪除

**--max-delete=NUM** 最多刪除NUM個檔案

**--partial** 保留那些因故沒有完全傳輸的檔案,以是加快隨後的再次傳輸

**--force** 強制移除目錄,即使不為空白

**--numeric-ids** 不將數位使用者和組ID匹配為使用者名稱和組名

**--timeout=TIME** IP逾時時間,單位為秒

**-I**, --ignore-times 不跳過那些有同樣的時間和長度的檔案

**--size-only** 當決定是否要備份檔案時,僅僅察看檔案大小而不考慮檔案時間

**--modify-window=NUM** 決定檔案是否時間相同時使用的時間戳記視窗,預設為0

**-T** --temp-dir=DIR 在DIR中建立臨時檔案

**--compare-dest=DIR** 同樣比較DIR中的檔案來決定是否需要備份

**-P** 等同於 --partial

**--progress** 顯示備份過程

**-z**, --compress 對備份的檔案在傳輸時進行壓縮處理

**--exclude=PATTERN** 指定排除不需要傳輸的檔案模式

**--include=PATTERN** 指定不排除而需要傳輸的檔案模式

**--exclude-from=FILE** 排除FILE中指定模式的檔案

**--include-from=FILE** 不排除FILE指定模式比對的檔案

**--version** 列印版本資訊

**--address** 綁定到特定的地址

**--config=FILE** 指定其他的設定檔,不使用預設的rsyncd.conf檔案

**--port=PORT** 指定其他的rsync服務連接埠

**--blocking-io** 對遠程shell使用阻塞IO

**-stats** 給出某些檔案的傳輸狀態

**--progress** 在傳輸時現實傳輸過程

**--log-format=formAT** 指定記錄檔格式

**--password-file=FILE** 從FILE中得到密碼

**--bwlimit=KBPS** 限制I/O頻寬,KBytes per second

**-h**, --help 顯示協助資訊

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.