rsync命令的基本使用
作者:尹正傑
版權聲明:原創作品,謝絕轉載!否則將追究法律責任。
rsync服務軟件是一款開源,高速的,數據同步(拷貝)工具。
一.rsync服務的特點
1>.本地拷貝
可以把數據從一個路徑復制到另一個路徑,類似與cp和mv的功能。
2>.異地拷貝
可以從一台機器把數據復制到另一台機器,類似與scp。
3>.增量備份
可以實現增量拷貝,只把多的內容拷過去,效率很高。
4>.刪除功能
rsync本身並沒有刪除功能,但是可以通過它的參數來實現刪除功能,類似於Linux的rm命令。
5>.rsync服務模式
可以掛起后台進程,接受別人訪問,這也是它的特殊的地方。
二.rsync實操案例
1>.本地拷貝
[root@yinzhengjie ~]# rsync -avz /var/log/messages /tmp/
與cp不同的是它默認就是增量拷貝,當第一個拷貝一個較大的文件時,若第二次在繼續拷貝該文件時,它只會拷貝新增的內容。
rsync命令參數:
-v:--verbose,顯示輸出過程
-z:--compress,壓縮
-a:--archive,多參數集合,也叫歸檔模式,包括多個參數,相當於:-rlptgoD(no -H,-A,-X)。
-r:--recursive,遞歸
-t:--times,保持修改時間屬性
-o:--owner 保持屬主不變
-p:--perms 保持權限不變
-g:--group 保持用戶組不變
-l:--links 保證用戶組不變
-q:--quiet 安靜的拷貝
2>.刪除功能
[root@yinzhengjie ~]# mkdir /yinzhengjie
[root@yinzhengjie ~]# rsync -avz --delete /yinzhengjie/ /opt/
表示將目標文件的內容和本文件的內容一致,若目標文件中存在本目錄中不存在的文件時,直接刪除!
3>.排除文件
--exclude:排除文件,當然也支持排除多個文件,用“{a.log,b.log,c.log}”替換圖中的"a.log"即可。
--exclude-from:從文件中排除
4>.異地拷貝
[root@yinzhengjie ~]# rsync -avz /yinzhengjie -e 'ssh -p 5200' yinzhengjie@172.16.3.210:~
可以從一台機器把數據賦值到另一台機器,相當於scp命令。只不過scp命令是全量拷貝,而rsync是增量拷貝(只拷貝變化的文件),各自有自己的特點。
提示:"/yinzhengjie"和"/yinzhengjie/"這兩個目錄的區別是什么?
/yinzhengjie: 指的是目錄本身及目錄下的內容。
/yinzhengjie/ :指的是目錄下的內容。
5>.關於遠程拷貝的shell腳本
#!/bin/bash #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie #EMAIL:y1053419035@qq.com #判斷用戶是否傳參 if [ $# -lt 1 ];then echo "請輸入參數"; exit fi #獲取文件路徑 file=$@ #獲取子路徑 filename=`basename $file` #獲取父路徑 dirpath=`dirname $file` #獲取完整路徑 cd $dirpath fullpath=`pwd -P` #同步文件到DataNode for (( i=102;i<=104;i++ )) do #使終端變綠色 tput setaf 2 echo =========== s$i %file =========== #使終端變回原來的顏色,即白灰色 tput setaf 7 #遠程執行命令 rsync -lr $filename `whoami`@s$i:$fullpath #判斷命令是否執行成功 if [ $? == 0 ];then echo "命令執行成功" fi done