rsync實戰教程
作者:一本正經胡說的韓
1、rsync基本概述
rsync是不用主機之間備份使用
官網地址:https//rsync.samba.org
rsync監聽端口:tcp 873
rsync運行模式:c/s (客戶端/服務器)
常見備份
(1)完全備份 所以數據備份
(2)增量備份 只備份上次增加的數據
(3)差異備份 備份是上一次完全備份后變化的數據
常見備份方法
各種組合
2、rysnc基本應用方式
推push 上傳(upload)
將客戶端的數據上傳到rsync服務器
拉pull 下載(download)
將rsync服務器的數據下載到客戶端
3、rsync傳輸模式
rsync -avz
本地方式:
文件同步: rsync -avz /etc/passwd /data/
目錄同步: rsync -avz /data/ /opt/
注意: /data/ "同步是目錄的內容" /data "同步的是目錄及其內容"
完全同步
--delete 保存目錄數據保持一致 rsync -avz /a/ /b/ --delete 會刪除
遠程備份:
推
rsync -avz /etc/hosts root@172.16.1.31:/etc
拉
rsync -avz root@172.16.1.31:/home/html/a.txt . (當前目錄)
rsync -avz root@172.16.1.31:/server/scripts/rbackup.sh /root/
守護進程
1、安裝軟件包 yum install -y rsync
2、配置文件
查找配置文件
#############################
rpm -qc rsync
rpm -ql|grep /etc
vim 清空 %d |dG
3、
全局配置文件
vim /etc/rsyncd.conf
rsync配置模板文件
uid = rsync #---運行進程用戶
gid = rsync #---運行進程的用戶組
prot = 873 #端口監聽
fake super = yes #3.1版本以上 無需rsync使用root身份運行
user chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.password
log file = /var/log/rsyncd.log
[backup]
comment = "this is hx"
path = /backup
#################################
4、創建程序用戶(服務端配置流程)
#創建用戶 無需登錄
useradd -M -s /sbin/nologin rsync
#查看
cat /etc/passwd|grep rsync
#創建目錄
mkdir -p /backup
#* 設置權限
chown -R rsync.rsync /backup
#創建虛擬用戶認證文件
#虛擬用戶名:密碼
echo "rsync_backup:123456" >/etc/rsync.passwd
chmod 600 /etc/rsync.passwd
#啟動服務
systemctl start rsyncd
#查看啟動狀態
systemctl status rsyncd
#查看端口號
lsof -i :873
ss -antp|grep rsync
netstat -antp|grep rsync
5(客戶端安裝)
yum install -y rsync
#實戰教程
man rsync
推:
客戶端推送文件|目錄到rsync服務器
rsync -avz /etc/ rsync_backup@172.16.1.41::backup
拉:
客戶端從服務器backup模塊下的內容拉倒本地
rsync -avz rsync_backup@172.16.1.41::backup/ /opt/
錯誤實例:
文件權限問題:
[root@backup backup]# ll
total 1724
-rw------- 1 root root 0 Jul 3 08:35 1.sh
-rw-r--r-- 1 root root 106 Jul 4 02:47 1.sh.gz
-rw-r--r-- 1 root root 106 Jul 4 02:48 1.sh.tar.gz
-rw------- 1 root root 1728597 Jul 3 07:39 messages
-rw------- 1 root root 22089 Jul 3 07:39 secure
[root@nfs opt]# rsync -avz rsync_backup@172.16.1.41::backup /opt/
Password:
receiving incremental file list
rsync: failed to read xattr user.rsync.%stat for "messages" (in backup): Permission denied (13)
rsync: failed to read xattr user.rsync.%stat for "secure" (in backup): Permission denied (13)
rsync: failed to read xattr user.rsync.%stat for "1.sh" (in backup): Permission denied (13)
rsync: send_files failed to open "1.sh" (in backup): Permission denied (13)
rsync: send_files failed to open "messages" (in backup): Permission denied (13)
rsync: send_files failed to open "secure" (in backup): Permission denied (13)
sent 85 bytes received 724 bytes 231.14 bytes/sec
total size is 1,750,898 speedup is 2,164.27
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1650) [generator=3.1.2]
查看日志
cat /var/log/messags
cat /var/log/secure
免密登錄
客戶端建立密碼
echo "123456" /etc/rsync.passwd
設置權限
chmod 600 /etc/rsync.passwd
paintoolsal
出現問題 同步失敗問題
[root@nfs opt]# rsync -avz rsync_backup@172.16.1.41::backup/ /opt/ --password-file=/etc/rsync.password
receiving incremental file list
rsync: link_stat "." (in backup) failed: Permission denied (13)
sent 8 bytes received 85 bytes 186.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1650) [Receiver=3.1.2]
rsync: read error: Connection reset by peer (104)
[root@nfs opt]#
解決方法1
修改服務器端rsyncd.conf
uid=root
gid=root
出現問題
rsync -avz rsync_backup@172.16.1.41::backup /opt/ --password-file=/etc/rsync.password
@ERROR: auth failed on module backup
解決方法
修改密碼文件:
免密登錄
echo "123456" > /etc/rsync.password
兩種方式都可以
(1)chmod 600 /etc/rsync.password
(1)export RSYNC_PASSWORD=123456
rsync -avz rsync_backup@172.16.1.41::backup/ /opt1/ --password-file=/etc/rsync.passwod
正兒八經實戰教程
ssh 和rsync 的區別
1、tcp端口不一致(22,873)
2、認證方式不一致("/etc/passwod /etc/shadow" : "/etc/rsync.password")
3、程序用戶不一致(“服務系統用戶”:“程序用戶創建的 rsync”)注:修改共享模塊的屬主 屬組
一、增加新的模塊
修改/etc/rsyncd.conf
[backup]
path = /backup
auth users = rsync_backup
secres files = /etc/rsync.password
二、實戰教程
創建備份要求的文件 文件名-ip地址-時間
(1)mkdir -p /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F)
(2)創建腳本文件 進行創建備份目錄
出現的小問題
{
1)修改別名
vim ~/.bashrc
2)解決centos7命令不能使用
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
}
注意推動的時候/ 是代表文件 不加/ 是目錄一起推送
客戶端
(1)制作推送 簡易腳本
#!/bin/bash
#定義變量
Host=$(hostname)
IP=$(ifconfig eth1|awk 'NR==2{print $2}')
Date=$(date +%F)
BackupDir=/backup
Dest=${BackupDir}/${Host}_${IP}_${Date}
#
mkdir -p $Dest
echo "create is ok >>>ok"
#
#cp -p /etc/fstab /etc/hosts /var/spool/cron/root $Dest
#cp -p /var/log/messages /var/log/secure /var/log/cron $Dest
#cp -p /etc/rsyncd.conf $Dest
# 打包需要備份的文件
tar -zcPf $Dest/log.tar.gz /etc/fstab /etc/hosts /var/spool/cron/root $Dest
tar -zcPf $Dest/sysconf.tar.gz /var/log/messages /var/log/secure /var/log/cron $Dest
tar -zcPf $Dest/svrconf.tar.gz /etc/rsyncd.conf $Dest
# md5 校驗
md5sum $Dest/* > $Dest/backup_check_$Date
#push 免密推送
export RSYNC_PASSWORD=123456
rsync -avz $Dest rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password
#保留七天刪除
find $BackupDir -type d -mtime +7 |xargs rm -rf
服務器校驗
(2)
md5sum -c /backup/*_$(date +%F)/backup_check* >/backup/*_$(date +%F)/result.txt
服務端發郵件
yum install mailx -y
vim /etc/mail.rc
set from=1805478333@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=1805478333@qq.com
set smtp-auth-password=
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
發送
mail -s "rsync" 1805478333@qq.com </etc/hostes
客戶端備份
1、安裝rsync
yum install -y rsync
2、將客戶端的備份腳本拉過來就可以了
3、修改密碼文件(只是添加密碼即可123456)