rsync備份工具linux
1、scpvim
scp備份工具不能夠進行增量備份bash
一、安裝scpdom
[root@chenglinux ~]# yum install -y openssh-clientsssh
二、scp -r 192.168.21.98:/tmp/a/ ./a/
ide
從遠程主機把/tmp/下面的a目錄拷貝到當前目錄下工具
-r:以遞歸方式複製測試
三、[root@chenglinux cheng]# scp 1.txt 192.168.21.98:/root/cheng/ui
把當前目錄下的文件拷貝到遠處主機的/root/cheng/目錄下spa
四、[root@chenglinux cheng]# scp 1.txt cheng@192.168.21.98:/tmp/cheng/
把1.txt文件拷貝到遠程主機cheng這個用戶下
五、若是省略掉用戶名,那麼就會拷貝到當默認的用戶下,就是這邊是用的什麼用戶進行拷貝的,
那麼複方也就會是一樣的帳戶。若是對方主機沒有那個用戶,那麼久拷貝不成功
六、scp -r a/ 192.168.21.98:/tmp/b/
把a目錄下的文件拷貝到遠程主機b目錄下,而不是把a目標拷貝到b目錄下
2、rsync備份工具,能夠把文件拷貝到遠程主機,能夠支持增量備份
一、默認沒有安裝,須要安裝:
[root@linux2 ~]# yum install -y rsync
同時還要安裝:openssh-clients否則沒法執行
二、rsync 命令格式
rsync [OPTION]... SRC DEST
rsync -av 123.txt /tmp/
把123.txt同步到/tmp目錄下
rsync [OPTION]... SRC [USER@]HOST:DEST
rsync -av 123.txt 192.168.0.101:/data/
把123.txt文件同步到192.168.0.101機器的/data/目錄下
rsync [OPTION]... [USER@]HOST:SRC DEST
rsync 用戶名@ip地址:/tmp/1.txt /tmp/1.txt
把遠程主機/tmp/1.tx文件同步到本地來
rsync [OPTION]... [USER@]HOST::SRC DEST
rsync [OPTION]... SRC [USER@]HOST::DEST
這兩種使用了兩個冒號,這種方式和前面的方式的不一樣在於驗證方式不一樣,稍後寫到
rsync -av usr/ /tmp/123/
把user目錄拷貝的tmp下面,別切更名爲123
SRC:src是source的縮寫,也就是源代碼的意思。在這裏表示的是源文件地址
-a:同步數據時必定要保證數據原來的屬性不會改變
3、 rsync經常使用選項
-a 歸檔模式,表示以遞歸方式傳輸文件,並保持全部屬性,等同於-rlptgoD, -a選項後面能夠跟一個 --no-OPTION 這個表示關閉-rlptgoD中的某一個例如-a--no-l 等同於-rptgoD
-r 對子目錄以遞歸模式處理,主要是針對目錄來講的,若是單獨傳一個文件不須要加-r,可是傳輸的是目錄必須加-r選項
-v 打印一些信息出來,好比速率,文件數量等
-l 保留軟鏈結
-L 向對待常規文件同樣處理軟連接,若是是SRC中有軟連接文件,則加上該選項後將會把軟連接指向的目標文件拷貝到DST,等因而把真正的文件也拷貝過去了
-p 保持文件權限
-o 保持文件屬主信息
-g 保持文件屬組信息
-D 保持設備文件信息
-t 保持文件時間信息
-z 在拷貝的時候進行壓縮
--delete 刪除那些DEST中有,可是SRC沒有的文件
--exclude=PATTERN 指定排除不須要傳輸的文件,等號後面跟文件名,能夠是萬用字符模式(如*.txt)
rsync -av --exclude="*.txt" usr/ /tmp/123/ #同步的時候排除掉以.txt結尾的文件。
過濾多個文件時,在-av後面直接添加--exclude="文件類型或者名稱"就能夠了
--progress 在同步的過程當中能夠看到同步的過程狀態,好比統計要同步的文件數量、同步的文件傳輸速度等等
能夠寫成這樣:rsync -avP usr/ /tmp/123/
--bwlimit=100:控制同步帶寬,100指的是速度,能夠根據實際狀況來寫
-u 加上這個選項後將會把DEST中比SRC還新的文件排除掉,不會覆蓋
最經常使用的 -a -v --delete --exclude
-a --no-l -v:這個選項的做用就是在拷貝文件的時候不拷貝軟鏈接文件
4、rsync選項講解
一、rsync -av dir1/ dir2/ # 其中dir2/目錄能夠不存在,記得同步目錄時必定要在末尾加上/
-a :會把軟鏈接原本來本的拷貝過去
二、rsync -avL test1/ test2/ #加-L會拷貝軟鏈接文件對應的源文件到目標目錄裏面
三、-u 選項的做用是,若是目標文件比源文件新,那麼會忽略掉該文件
touch test2/1.txt; rsync -avu test1/ test2/
四、rsync -av --delete test1/ test2/ #這樣會把test2/目錄比test1/目錄多出來的文件刪除掉
五、rsync -a --exclude=「2.txt」 test1/ test2/ #在同步的過程當中,會忽略掉2.txt這個文件
六、rsync -a --progress --exclude=「*.txt」 test1/ test2/ #--progress 顯示同步過程的詳細信息,--exclude後面也可使用通配符*
5、 rsync應用實例 - ssh方式
rsync -avL test1/ www@192.168.0.101:/tmp/test2/
rsync -avL 192.168.0.101:/tmp/test2/ ./test3/
因爲須要輸入密碼因此不適合寫到腳本中,但能夠經過建立祕鑰對,讓兩臺機器產生信任關係從而不用輸入密碼
一、在Linux2建立如下信息,須要注意的是在實驗中,Linux2主機是服務端
[root@linux2 ~]# mkdir .ssh [root@linux2 ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 19:da:90:61:63:d7:94:65:7a:4d:ad:05:06:50:49:5a root@linux2 The key's randomart p_w_picpath is: +--[ RSA 2048]----+ | = .oo*Eo+o | | o = o=.+ o| | o . o . .o | | + o . . | | . S | | | | | | | | | +-----------------+ [root@linux2 ~]# ls .ssh id_rsa id_rsa.pub known_hosts [root@linux2 ~]# cat .ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxCPm8bVIQohY/JWI9KBaHtKb+W4TnNL3Xg12CFj+h52yu0ixvANj+qrSq8xCXD47gNALGt4jzMmGIZQ8TxfRjMyBdNtRWswQR1oxefabMuehwBwmSnMD2g9dzY8r8eKXIEBkSGk5uycPooZJbTfRd0XJEfZFqlhey3PEW9HoOslj/kOGLWPXOdIDLh0oRDZe2QP5KOvhw6NQdyLiJPvEptss4qWr2DsV5reCQW/L7yEi1gxkLSYeFew0Xsia58Hy3GnYLP8PYlcopWIs0oSMhvCLJr/xw7IXFhnWfZaH/Iho5JT+8VoBdao2AjMG5yrNi4OOpldn8VijVgOJ/gd78w== root@linux2
把祕鑰複製到chenglinux機器上的/root/.ssh/authorized_keys文件中,若是chenglinux機器沒有.ssh目錄和authorized_keys文件須要建立。
二、因爲chenglinx這個機器上沒有.ssh目錄和authorized_keys文件,因此須要建立
[root@chenglinux ~]# mkdir .ssh [root@chenglinux ~]# chmod 600 .ssh/ [root@chenglinux ~]# touch .ssh/authorized_keys [root@chenglinux ~]# vim .ssh/authorized_keys
三、在Linux2主機上測試登陸chenglinx,結果顯示已經不要輸入密碼了。
[root@linux2 ~]# ssh root@192.168.21.99 Last login: Wed Jun 3 14:36:35 2015 from 192.168.21.100 [root@chenglinux ~]#
四、測試rsync同步,也沒有提示輸入密碼,因此成功了。
[root@linux2 ~]# rsync -av chengzelin.txt 192.168.21.99:/root/chengzelin.txt2 sending incremental file list chengzelin.txt sent 82 bytes received 37 bytes 238.00 bytes/sec total size is 78 speedup is 0.66 [root@linux2 ~]#
五、若是ssh端口不是22,那麼須要寫成這樣的形式
rsync -av -e "ssh -p port」 /dir1/ 192.168.0.101:/tmp/dir2/
六、sshd的配置文件位置
/etc/ssh/sshd_condfig
七、strace命令是用來追蹤進程的,默認沒有安裝,須要安裝
6、 rsync應用實例 - 後臺服務方式
一、全局配置文件
配置文件 /etc/rsyncd.conf ,內容以下:
#port=873 #監聽端口默認爲873,也能夠是別的端口
log file=/var/log/rsync.log #指定日誌
pid file=/var/run/rsyncd.pid #指定pid
#address=192.168.0.10 #能夠定義綁定的ip
二、模塊內的設置
[test] #爲模塊名,自定義,模塊能夠有多個
path=/root/rsync # 指定該模塊對應在哪一個目錄下
use chroot=true #是否限定在該目錄下,默認爲true,當有軟鏈接時,須要改成fasle
max connections=4 # 指定最大能夠鏈接的客戶端數
read only=no #是否爲只讀
list=true #是否能夠列出模塊名
uid=root #以哪一個用戶的身份來傳輸
gid=root #以哪一個組的身份來傳輸
auth users=test #指定驗證用戶名,能夠不設置
secrets file=/etc/rsyncd.passwd #指定密碼文件,若是設定驗證用戶,這一項必須設置
hosts allow=192.168.0.101 #設置能夠容許訪問的主機,能夠是網段
須要注意的一點就是,通常只不須要指定用戶名和設置密碼,只須要指定hosts這個選項就能夠
三、密碼文件/etc/rsyncd.passwd的內容格式爲:username:password
四、啓動服務的命令是:rsync --daemon
五、rsync -av chengzelin.txt 192.168.21.99::test/4.txt
這個格式就是使用剛纔設定的模塊來同步文件,test就等於模塊設置中的rsync目錄,相似於一個別名(這裏就用到了前面所提到的格式了,就是這個格式:rsync [OPTION]... [USER@]HOST::SRC DEST)
默認去使用/etc/rsyncd.conf這個配置文件,也能夠指定配置文件 rsync --daemon --config=/etc/rsyncd2.conf
可以使用的選項有: rsync --daemon --help