rsync
1.rsync 遠(yuǎn)程同步工具:
實(shí)現(xiàn)主機(jī)與主機(jī)之間的同步, 實(shí)現(xiàn)增量的同步
PS: 如果將rsync當(dāng)一個(gè)服務(wù)來使用,則需要知道rsync是個(gè) c/s架構(gòu)
2.rsync 遠(yuǎn)程傳輸
上傳
1.我要將我本地的哪個(gè)文件,推送至哪臺服務(wù)器的哪個(gè)目錄,使用的是什么用戶
[root@backup ~]# rsync -avz ./backup_file root@172.16.1.31:/opt/
root@172.16.1.31's password: #輸入31的root密碼
下載
2.我要下載那個(gè)主機(jī)的那個(gè)目錄下的文件,使用的是什么系統(tǒng)用戶. 然后下載到我本地的那個(gè)位置
[root@backup ~]# rsync -avz root@172.16.1.31:/opt/backup_file ./file.txt
root@172.16.1.31's password: #輸入31的root密碼
推送/etc目錄下的所有文件
[root@backup ~]# rsync -avz /etc/ root@172.16.1.31:/opt
推送/etc目錄以及目錄下的所有文件
[root@backup ~]# rsync -avz /etc root@172.16.1.31:/opt
Rsync借助SSH協(xié)議同步數(shù)據(jù)存在的缺陷 ( 使用對端主機(jī)的 用戶名 密碼 系統(tǒng) )
1.使用系統(tǒng)用戶(不安全)
2.使用普通用戶(會導(dǎo)致權(quán)限不足情況)
3.守護(hù)進(jìn)程模式 (一直在后臺持續(xù)的運(yùn)行)
1.安裝
[root@backup ~]# yum install rsync -y
2.配置 ( 改變程序運(yùn)行軌跡 )
[root@backup ~]# cat /etc/rsyncd.conf
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
ead only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
comment = welcome to oldboyedu backup!
path = /backup
3.根據(jù)配置創(chuàng)建一些初識環(huán)境:
3.1創(chuàng)建rsync用戶 rsync程序需要rsync這個(gè)用戶來運(yùn)行
[root@backup ~]# groupadd rsync
[root@backup ~]# useradd -M -s /sbin/nologin rsync -g rsync
[root@backup ~]# id rsync
uid=1000(rsync)gid=1000(rsync)groups=1000(rsync)
3.2 虛擬用戶 /etc/rsync.passwd username:password
[root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.passwd
[root@backup ~]# chmod 600 /etc/rsync.passwd
3.3 創(chuàng)建一個(gè)/backup目錄
[root@backup ~]# mkdir /backup
[root@backup ~]# chown -R rsync.rsync /backup/
4.啟動
[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable rsyncd
5.檢測
[root@backup ~]# netstat -lntp | grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 8616/rsync
6.使用
[root@nfs ~]# rsync -avz ./anaconda-ks.cfg rsync_backup@172.16.1.41::backup #推送
[root@nfs ~]# rsync -avz rsync_backup@172.16.1.41::backup /opt #拉取
7.客戶端每次都需要使用密碼 (怎樣免密)
1.設(shè)定變量 RSYNC_PASSWORD (后面寫腳本的時(shí)候)
[root@nfs ~]# export RSYNC_PASSWORD=123456
[root@nfs ~]# rsync -avz rsync_backup@172.16.1.41::backup /opt
8.-avz 這些選項(xiàng) 怎么理解?
a #歸檔模式傳輸, 等于-tropgDl
-v #詳細(xì)模式輸出, 打印速率, 文件數(shù)量等
-z #傳輸時(shí)進(jìn)行壓縮以提高效率
-r #遞歸傳輸目錄及子目錄,即目錄下得所有目錄都同樣傳輸蜕径。
-t #保持文件時(shí)間信息
-o #保持文件屬主信息
-p #保持文件權(quán)限
-g #保持文件屬組信息
-l #保留軟連接
-D #保持設(shè)備文件信息
-P #顯示同步的過程及傳輸時(shí)的進(jìn)度等信息
-L #保留軟連接指向的目標(biāo)文件
-e #使用的信道協(xié)議,指定替代rsh的shell程序
--exclude=PATTERN #指定排除不需要傳輸?shù)奈募J? --exclude-from=file #文件名所在的目錄文件
--bwlimit=100 #限速傳輸
--delete #讓目標(biāo)目錄和源目錄數(shù)據(jù)保持一致
9. --delete 讓目標(biāo)目錄和源目錄數(shù)據(jù)保持一致(這個(gè)參數(shù)危險(xiǎn)慎用)
推送: 源有什么,目標(biāo)就有什么
[root@nfs ~]# rsync -avz /root/ rsync_backup@172.16.1.41::backup --delete
拉取: 目標(biāo)主機(jī)有什么, 本地就有什么
[root@nfs ~]# rsync -avz rsync_backup@172.16.1.41::backup ./ --delete
10.--bwlimit 限速 (單位=KB)
[root@nfs ~]# rsync -avzP --bwlimit=5120 ubuntu-18.04.1-desktop-amd64.iso rsync_backup@172.16.1.41::backup
sending incremental file list
ubuntu-18.04.1-desktop-amd64.iso 159,186,944 8% 5.12MB/s 0:05:41
11.--exclude 這個(gè)參數(shù) (--exclude-from)
將yum中不需要下載的源寫入一個(gè)文件中pc.txt 娃圆,用- - exclude-from=pc.txt
[root@nfs ~]# rsync -avzP --exclude-from=pc.txt rsync://192.168.0.128/yum ./
[root@nfs ~]# cat pc.txt
centos/
code/
docker-ce/
epel/
git/
java/
jenkins/
kubernetes/
mongodb/
mysql/
node/
non-supported/
php/
python/
redis/
sonarqube/
windowstools/
zabbix/
CentOS-7-x86_64-DVD-1810.iso
CentOS-Base.repo
docker-ce.repo
epel.repo
nginx.repo
php.repo
rsync_exclude.txt
zabbix.repo
各種源使用說明.txt