Rsync是一款開源的、快速的、多功能的、可實現全量及增量的本地或遠程數據同步備份的優秀工具。而且能夠不進行改變原有數據的屬性信息,實現數據的備份遷移特性。Rsync軟件適用於unix/linux/windows等多種操做系統平臺。
Rsync是一個快速和很是通用的文件複製工具。它能本地複製,遠程複製,或者遠程守護進程方式複製。它提供了大量的參數來控制其行爲的各個方面,而且容許很是靈活的方式來實現文件的傳輸複製。它以其delta-transfer算法聞名。
rsync監聽端口:873
rsync運行模式:C/Slinux
全部數據所有傳送算法
把原來的文件和新的文件一塊兒統一傳送shell
全量複製,效率低vim
假設客戶端上有 file1 file2 file3 文件,服務端上有 file1 文件,現要將客戶端上的數據備份至服務端windows
徹底備份方式:bash
在傳輸數據以前經過一些算法經過你有的數據和我有的數據進行對比,把不同的數據經過網絡傳輸服務器
增量複製,效率較高網絡
假設客戶端上有 file1 file2 file3 文件,服務端上有 file1 文件,現要將客戶端上的數據備份至服務端工具
增量備份方式:測試
rsync命令 屬於 1v4命令
cp命令使用: [root@nfs01 backup]# cp /etc/hosts /tmp/ [root@nfs01 backup]# ll /tmp/hosts -rw-r--r-- 1 root root 312 Jul 5 22:55 /tmp/hosts rsync命令使用: [root@nfs01 backup]# rsync /etc/hosts /tmp/host_rsync [root@nfs01 backup]# ll /tmp/host_rsync -rw-r--r-- 1 root root 312 Jul 5 22:55 /tmp/host_rsync
scp使用: [root@nfs01 backup]#scp -rp /etc/hosts 172.16.1.41:/backup root@172.16.1.41's password: hosts 100% 312 17.0KB/s 00:00 rsyn命令使用: [root@backup mnt]# rsync -avP /etc/hosts 172.16.1.31:/mnt root@172.16.1.31's password: sending incremental file list hosts 424 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/1) sent 497 bytes received 31 bytes 211.20 bytes/sec total size is 424 speedup is 0.80 [root@backup mnt]#
rsync備份目錄狀況
rsync -rp /oldboy/ 172.16.1.41:/backup 有斜線 #在備份目錄後面有 斜線 /oldboy/:只將目錄下面的內容進行備份傳輸 rsync -rp /oldboy 172.16.1.41:/backup 無斜線 #在備份目錄後面沒有斜線/oldboy:會將目錄自己以及下面的內容進行傳輸備份
rm命令使用: [root@backup mnt]# rm -f * rsync命令使用: [root@backup mnt]# rsync -avP --delete /null/ /mnt/ sending incremental file list ./ deleting 10.txt deleting 09.txt deleting 08.txt deleting 07.txt deleting 06.txt deleting 05.txt deleting 04.txt deleting 03.txt deleting 02.txt deleting 01.txt sent 29 bytes received 15 bytes 88.00 bytes/sec total size is 0 speedup is 0.00 [root@backup mnt]#
Local: rsync [OPTION...] SRC... [DEST] src:要備份的數據信息 dest:備份到什麼路徑中 [root@backup backup]# rsync /backup/cheak.txt /root/
rsync拉操做 拉:Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] [USER@] 以什麼用戶身份拉取數據(默認以當前用戶) 注意:須要對端也要有相同的用戶(對端用戶密碼) hosts 指定遠程主機IP地址或者主機名稱 SRC 要拉取的數據信息 dest 保存到本地的路徑信息 [root@backup mnt]# rsync -avP 172.16.1.31:/mnt /mnt
rsync推操做 推:Push: rsync [OPTION...] SRC... [USER@]HOST:DEST SRC 本地要進行遠程傳輸備份的數據 [USER@] 以什麼用戶身份拉取數據(默認以當前用戶) hosts 指定遠程主機IP地址或者主機名稱 dest 保存到遠程的路徑信息 [root@backup mnt]# rsync -avP /mnt 172.16.1.31:/mnt
-a #歸檔模式傳輸, 等於-tropgDl -v #詳細模式輸出, 打印速率, 文件數量等 -z #傳輸時進行壓縮以提升效率 -r #遞歸傳輸目錄及子目錄,即目錄下得全部目錄都一樣傳輸。 -t #保持文件時間信息 -o #保持文件屬主信息 -p #保持文件權限 -g #保持文件屬組信息 -l #保留軟鏈接 -P #顯示同步的過程及傳輸時的進度等信息 -D #保持設備文件信息 -L #保留軟鏈接指向的目標文件 -e #使用的信道協議,指定替代 rsh 的 shell 程序 --exclude=PATTERN #指定排除不須要傳輸的文件模式 --exclude-from=file #文件名所在的目錄文件 --bwlimit=100 #限速傳輸 --partial #斷點續傳 --delete #讓目標目錄和源目錄數據保持一致
1) 下載安裝軟件 2) 編寫配置文件 3) 搭建服務環境 4) 啓動服務程序 5) 測試服務功能
#下載安裝軟件 rpm -qa | grep rsync #確認軟件有沒有安裝 yum -y install rsync
#編寫配置文件 [root@backup backup]# vim /etc/rsyncd.conf uid = rsync gid = rsync prot = 873 #fake super=yes use chroot = no max connections = 200 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log ingnore errors read only = false list = false hosts allow = 172.16.1.0/24 hosts deny = 0.0.0.0/32 auth users = rsync_backup secrets file= /etc/rsync.password [backup] comment="backup dir by oldboy" path = /backup
建立rsync服務的虛擬用戶 [root@backup backup]# useradd rsync -M -s /sbin/nologin
[root@backup backup]# echo "rsync_backup:oldboy123" >/etc/rsync.password [root@backup backup]# chmod 600 /etc/rsync.password
#建立備份目錄並修改屬主屬組信息 [root@backup backup]# mkdir /backup [root@backup backup]# chown rsync.rsync /backup/
#啓動守護進程備份服務 [root@backup backup]# systemctl start rsyncd [root@backup backup]# systemctl enable rsyncd [root@backup backup]# systemctl status rsyncd
客戶端執行命令 服務端:來着何人 客戶端:我是rsync——backup 服務端:說出暗號 客戶端:oldboy123 客戶端進來以後轉換爲rsync用戶 寫入數據
#建立一個密碼文件 [root@nfs mnt]# echo "oldboy123" >/etc/rsync.password [root@nfs mnt]# chmod 600 /etc/rsync.password
#進行免交互傳輸數據測試 方法一: [root@nfs mnt]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password 方法二: [root@nfs mnt]# export RSYNC_PASSWORD=123456 [root@nfs mnt]# rsync -avP /mnt/ rsync_backup@172.16.1.41::backup
1.rsync服務端有沒有啓動 2.配置文件有沒有錯誤 3,密碼文件有沒有建立 4.密碼文件格式是否正確 虛擬用戶:密碼 5.密碼文件是否爲600 用戶是root 6.www用戶是否建立了 7.數據目錄是否建立而且更改成www用戶
[root@backup backup]# cat /server/scripts/rsync_install.sh #!/bin/bash # install rsync yum -y install rsync # vim conf cat > /etc/rsyncd.conf<<EOF uid = www gid = www prot = 873 fake super=yes use chroot = no max connections = 200 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log ingnore errors read only = false list = false hosts allow = 172.16.1.0/24 hosts deny = 0.0.0.0/32 auth users = rsync_backup secrets file= /etc/rsync.password [backup] comment="backup dir by oldboy" path = /backup EOF # useradd useradd -s /sbin/nologin -M www # mkdir backup mkdir -p /backup chown www.www /backup #passwd echo "rsync_backup:oldboy123" >/etc/rsync.password chmod 600 /etc/rsync.password # star rsync systemctl start rsyncd systemctl enable rsyncd #status rsync ps -ef | grep rsync netstat -lntup|grep 873 [root@backup backup]#