rsync 命令總結

在不同的目錄或機器之間拷貝文件是服務器上常用的一項操作。備份文件;主服務器同步文件至分流服務器;分類服務器將自己收集的文件傳給主服務器等任務都涉及到文件的拷貝,相比簡單的 cp,scp 命令, rsync 支持增量拷貝,功能強大也更靈活。

rsync命令是一個遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間的文件。rsync使用所謂的“rsync算法”來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。

rsync 有 6 種不同的工作模式,對應以下 6 種語法:

rsync [OPTION]... SRC DEST    # 將本地文件(目錄) SRC 同步到本地文件(目錄) DEST
rsync [OPTION]... SRC [USER@]host:DEST    # 通過 ssh 將本地文件(目錄) SRC 同步到遠程主機 HOST 上的文件(目錄) DEST
rsync [OPTION]... [USER@]HOST:SRC DEST    # 通過 ssh 將遠程主機 HOST 上的文件(目錄)同步到本地文件(目錄) DEST
rsync [OPTION]... [USER@]HOST::SRC DEST    # 通過 rsync 服務將遠程主機 HOST 上的文件(目錄) SRC 同步到本地文件(目錄) DEST
rsync [OPTION]... SRC [USER@]HOST::DEST    # 通過 rsync 服務將本地文件(目錄)同步到遠程主機 HOST 上的文件(目錄) DEST 
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC    # 通過 rsync 服務列出遠程主機 HOST 上 SRC 目錄裏的文件列表

可以看到除了在本地同步文件之外,rsync 通過 ssh 和 rsync 兩種方式支持主機之間的文件同步。ssh 方式不需要額外配置,只要兩臺主機都開啓了 rsync 服務即可。以 ssh 方式同步時 host 和地址之間用 : 分隔,例如:rsync -aq /data/folder/ [email protected]:/data/folder_backup/,這裏要注意如果同步目錄後面都帶 / 則會覆蓋目標目錄,例如此列中 folder 會覆蓋 folder_backup。若同步目錄後都不帶 / 則會放到目標目錄下,例如 rsync -aq /data/folder /data/folder2 會將 folder 拷貝到 folder2 下。

ssh 同步時會要求輸入 ssh 密碼,但如果配好了密鑰則可以直接同步,參考 http://www.jb51.net/article/60192.htm

rsync 方式同步文件需要寫 rsync 配置,優點是不需要 ssh 登錄且可以分配不同的帳號和權限。rsync 配置文件在 /etc/rsyncd.conf,默認沒有這個文件需要手動創建,可以參照下面這個模版配置 rsync。

# rsync 全局配置
uid = root
gid = root
hosts allow = 192.168.8.122, 192.168.8.123
#hosts deny = 0.0.0.0/32
use chroot = no
max connections = 10
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
timeout=600

# rsync 模塊配置 可配置多個模塊對應不同的目錄和帳號
[clientdata]     
path = /usr/local/share/rsync_backup
comment = rsync files
ignore errors
read only = no
list = no
auth users = user
secrets file = /etc/rsync.passwd

[test]
path = /home/hyj/workspace/test
comment = rsync files
ignore errors
read only = yes
list = no
auth users = rsync
secrets file = /etc/rsync.passwd
用 rsync 方式向遠程主機同步文件時 HOST 後面用 :: 分隔,後跟模塊名和模塊下子目錄路徑。

例如 rsync -aq /data/folder/ [email protected]::clienddata/folder_back/。

最後來說說 rsync 命令的選項參數,注意到上面例子中都加上了 -aq 參數,它表示遞歸同步子目錄子文件並保留文件熟悉,使用精簡輸出模式,是常用的選項。rsync 常用的選項如下:

-v 詳細輸出模式

-q 精簡輸出模式

--progress 顯示傳輸過程,在傳輸大文件時可以以百分比查看傳輸進度。

-a 歸檔模式,相當於 -rlgopD

-r 遞歸同步子目錄子文件

-g 保留文件屬組信息

-o 保留文件屬主信息

-p 保留文件權限

-D 保留設備文件信息

-l 保留軟鏈接

-t 保留文件時間信息

--delete 應用這個選項,目標目錄中有而源目錄中沒有的文件將被刪除


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章