rsync介紹
rsync 是一款開源的、快速的、多功能的、可實現全量及增量的本地或遠程數據同步備份的優秀工具。並且可以不進行改變原有數據的屬性信息、實現數據的備份遷移特性。Rsync軟件適用於unlx、linux、windows等多種操作系統平臺。可以實現本地或者異地備份
rsync包含的功能
1、rsync包含cp功能
命令 參數 源文件 目標文件
[root@backup caojiaoyue]# ls /tmp/
[root@backup caojiaoyue]# rsync -r /caojiaoyue/ /tmp/
[root@backup caojiaoyue]# ls /tmp/
cao jiao yue
[root@backup caojiaoyue]# ls
cao jiao yue
[root@backup caojiaoyue]#
2、rsync包含rm功能
要實現rm功能其實涉及到一個無差異同步。其原理是創建一個空目錄。然後把這個空目錄去同步要刪除的目錄。注意如果刪除但個文件就實現不了。只能刪除單個文件的內容
[root@backup /]# ls /caojiaoyue/
1 2 3
[root@backup /]# ls kowenj
[root@backup /]# rsync -r --delete kowenj/ /caojiaoyue
[root@backup /]# ls /caojiaoyue/
[root@backup /]#
注意源必須要是空目錄必須加上/
錯誤寫法rsync -r --delete 源目錄 目標目錄 這樣是會把源目錄複製到目標目錄的
正確寫法rsync -r --delete 源目錄/ 目標目錄
一般情況還是用rm吧
3、rsync包含ls功能
[root@backup /]# rsync /etc/
drwxr-xr-x 4096 2017/05/05 09:19:13 .
-rw------- 0 2017/05/03 08:30:18 .pwd.lock
-rw-r--r-- 12288 2017/05/04 12:22:51 .rsyncd.conf.swp
-rw-r--r-- 4439 2016/04/12 15:56:23 DIR_COL
4、rsync包含scp功能
scp傳輸法
[root@backup /]# scp /caojiaoyue/* 10.0.0.31:/root/
[email protected]'s password: 注意這裏提示輸入的密碼是接收這些文件機器root用戶的密碼
ca 100% 0 0.0KB/s 00:00
ca1 100% 0 0.0KB/s 00:00
ca2 100% 0 0.0KB/s 00:00
[root@backup /]#
但是scp是全量傳輸,也就是不管對方機器上有沒有你傳輸的文件。你都會傳過去。萬一有文件名字是一樣的。但是內容不一樣的話。就會覆蓋掉。
rsync傳輸法
[root@caojiaoyue ~]# rsync -r -e "ssh -p 22" /root/caojiao 10.0.0.11:/tmp
The authenticity of host '10.0.0.11 (10.0.0.11)' can't be established.
RSA key fingerprint is 01:9a:da:25:04:f2:79:cb:d5:0d:f2:31:6b:8a:fa:f8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.11' (RSA) to the list of known hosts.
[email protected]'s password:
[root@caojiaoyue ~]#
命令 參數 源文件 IP:目標文件
注意rsync傳輸文件是增量的,也就是說 目標機器和源機器上共有的不會發。只發沒有的。從而大大提高了效率
有沒有想過你可以傳輸文件給別的機器。那麼你也可以從別的機器拿數據啊。官方解釋爲拉和推(pull 和 push)
其實可以這樣理解 如果目標文件在你的機器上那麼就是從別人的機器上拿過來啊。如果目標文件在別人機器上那麼肯定就是從你機器上發過去啊
從別人機器 上拿文件
命令 參數 IP目標文件 源文件
發送給別人機器上
命令 參數 源文件 IP目標文件
5、rsync守護進程方式傳輸(工作中常用的。通過守護進程方式實現實時備份等等)
第一步配置rsync服務端的配置文件
注意機器上以前沒有做過守護進程方式的傳輸。默認是沒有配置文件的需要你去創建在編輯的
rsync的配置文件是/etc/rsyncd.conf 注意名字一樣。如果不是這個名字的話那麼rsync是不知道你配置的那個文件是他的配置文件
vim /etc/rsyncd.conf
uid = rsync 執行用戶的uid
gid = rsync 執行用戶的gid
use chroot = no
max connections = 200 最大連接數
timeout = 300 超過時間如果客戶端300秒沒有發送文件的話就會自動斷開
pid file = /var/run/rsyncd.pid 存儲這個服務的進程號文件
lock file = /var/run/rsync.lock 鎖文件 一個客戶端沒有傳送另外一臺傳輸不了。爲了避免負載
log file = /var/log/rsyncd.log 服務的日誌文件
ignore errors 忽略錯誤
read only = false 是否爲只讀文件。當然不是啊 所以false (trep)
list = false 模塊列表是否可以讓客戶端看
hosts allow =172.16.1.0/24 可以傳輸的ip段
hosts deny = 0.0.0.0/32 不可以傳輸的IP段
auth users = rsync_backup 傳輸時候用的認證用戶(理解爲賬號吧)
secrets file = /etc/rsync.password 傳輸時候用的認證密碼
[backup] 模塊名字
comment = "backup dir by oldboy"
path =/backup 存儲的地址
配置文件裏面文件地址等可以自己改
第二步我們剛剛配置文件不是指定了運行這個程序的用戶嗎。如果有就不用創建了。沒有就創建吧(爲了安全一般用不可以登陸的)
useradd -s /sbin/nologin -M rsync 創建一個不可以登陸的用戶
id rsync 查看下
第三步創建一個存儲的目錄應爲我們配置文件裏已經寫了爲/backup就創建他吧
mkdir /backup
注意的是我們不是用rsync這個用戶創建的目錄。但是我們是用這個用戶來運行,爲了不發生權限問題我們把這個文件的擁有者和屬組改成rsync
chown -R rsync.rsync /backup 遞歸改因爲這當你創建這個文件後他會生成一個的隱藏文件。比如點和點點
第四步創建一個存儲密碼的文件。因爲我們配置文件已經指定了/etc/rsync.password所以我們就用它吧
echo rsync_backup:123456 >>/etc/rsync.password
rsync_backup是用戶(即賬號)123456就是密碼。如果有多個用戶或者密碼的話換行寫不要用逗號。但是前提是多個用戶,要在配置文件裏先申明
第五步密碼文件創建好了。默認文件的權限是644 那麼就是誰都可以看這個文件。這樣的密碼豈不是明文的。所以我們要把文件改成600或者400。只要擁有者有看的權限就好了。注意這個文件的擁有者不要是rsync了。如果改了的話。那傳輸也是會不成功的。這個文件的擁有者必須是root
第六步啓動rsync這個守護進程
rsync --daemon
就可以實現客戶端傳輸文件了
守護進程客戶端傳輸文件
rsync 參數 源文件 用戶@IP::目標文件
命令 參數 源文件 用戶@IP::目標文件
和scp不同的收目標文件和IP用兩個::分割
注意:守護進程方式不支持服務端向沒有配置的客戶端拿東西。因爲客戶端什麼都沒有配置。比如說賬號密碼等。非要拿的話,就變成了scp模式了
還可以不輸入密碼模式傳輸,
原理是你把密碼,放在一個文件中然後指定密碼所在
命令 參數 源文件 用戶@IP::目標文件 --passwrod-frel=存儲密碼的文件地址
注意存儲密碼的文件要改成000或者400或者600否則會報密碼文件不能被其他用戶訪問的錯
srync參數
--delete 實現無差異數據同步
----bwlimit=RATE實現數據傳輸過程中限速
-v詳細模式輸出,
-a歸檔模式,表示以遞歸方式傳輸文件。並保持所有文件屬性,等於rtopgDl(有星的都包涵)
-r 對子目錄以遞歸模式,即目錄的所有文件都同樣傳輸,注意是小寫r **
-t 保持文件時間信息 **
-o保持文件屬主信息 **
-P顯示同步的過程及傳輸的進度等信息
-p保持文件權限 **
-g保持文件屬組信息 **
-D保持設備文件信息 **
-l保留設備軟鏈接 **
-e使用的信道協議,例如指定ssh -e “ssh -p 22”
--exclude=PATTERN 指定排除不需要傳輸的文件信息類似於tar的排除
-exclude-from=file 文件名所在的目錄文件,既可以實現排除多個文件類似於tar的排除多個