畫品展現(xiàn)手機(jī)網(wǎng)站seo排名優(yōu)化有哪些
文章目錄
- 1. rsync
- 1.1 增量同步
- 1.2 rsync 指定目錄
- 2. rsync應(yīng)用場(chǎng)景
- 3. rsync服務(wù)端(守護(hù)進(jìn)程模式)
- 3.1 檢查網(wǎng)絡(luò)連通性
- 3.2 查看rsync軟件包
- 3.3 修改配置文件
- 3.4 啟動(dòng)服務(wù)
- 3.5 準(zhǔn)備環(huán)境
- 3.5.1 添加rsync虛擬用戶
- 3.5.2 創(chuàng)建rsync_backup用戶的密碼文件
- 3.5.3 創(chuàng)建模塊對(duì)應(yīng)目錄
- 3.5 服務(wù)端本地測(cè)試
- 3.6 客戶端測(cè)試
- 3.6.1 非交互式備份文件
- 4. 案例-書寫客戶端定時(shí)備份/etc腳本
- 4.1 為服務(wù)端配置文件添加新模塊
- 4.2 代碼
- 4.3 添加cron任務(wù)
- 5. 思維導(dǎo)圖
1. rsync
rsync
(Remote Sync),是 Linux/Unix 下的 遠(yuǎn)程增量文件同步工具,支持本地和遠(yuǎn)程文件傳輸,以 高效、低帶寬占用 著稱。
1.1 增量同步
同步文件方式 | 說明 |
---|---|
增量同步 | 僅同步新增的或修改的文件 |
全量同步 | 無論文件是否變化,全部重新傳輸(scp) |
1.2 rsync 指定目錄
在rsync命令中,
/etc/表示目錄下的內(nèi)容
/etc表示該目錄及目錄下內(nèi)容
- 與創(chuàng)建軟連接一樣,/etc表示為目錄創(chuàng)建軟連接,/etc/表示該目錄下的文件
- 與ls -ld也相同,原理一樣
[root@nfs01 ~]# ll -d /sbin/
dr-xr-xr-x 2 root root 20480 6月 11 19:10 /sbin/
[root@nfs01 ~]# ll -d /sbin
lrwxrwxrwx 1 root root 8 3月 6 2021 /sbin -> usr/sbin
2. rsync應(yīng)用場(chǎng)景
rsync應(yīng)用場(chǎng)景 | 目標(biāo) | 針對(duì)機(jī)器 |
---|---|---|
rsync+cron實(shí)現(xiàn)定時(shí)備份 | 配置文件、代碼、日志、數(shù)據(jù),不需要實(shí)時(shí)備份內(nèi)容 | 絕大部分機(jī)器、服務(wù)都能使用 |
rsync+lscynd/sersync實(shí)現(xiàn)實(shí)時(shí)同步 | 針對(duì)數(shù)據(jù)相關(guān)的服務(wù):存儲(chǔ)(nfs)、數(shù)據(jù)庫(kù) | 存儲(chǔ)(nfs) |
異地容災(zāi)(本質(zhì)也是定時(shí)或?qū)崟r(shí)同步) | 看公司是否需要異地備份 |
3. rsync服務(wù)端(守護(hù)進(jìn)程模式)
3.1 檢查網(wǎng)絡(luò)連通性
# ping本機(jī)
[root@backup ~]# ping 172.16.1.41
PING 172.16.1.41 (172.16.1.41) 56(84) bytes of data.
64 bytes from 172.16.1.41: icmp_seq=1 ttl=64 time=0.023 ms
64 bytes from 172.16.1.41: icmp_seq=2 ttl=64 time=0.024 ms
^C
--- 172.16.1.41 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1063ms
rtt min/avg/max/mdev = 0.023/0.023/0.024/0.000 ms
[root@backup ~]# ping backup
PING backup (172.16.1.41) 56(84) bytes of data.
64 bytes from backup (172.16.1.41): icmp_seq=1 ttl=64 time=0.017 ms
64 bytes from backup (172.16.1.41): icmp_seq=2 ttl=64 time=0.023 ms
^C
--- backup ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1047ms
rtt min/avg/max/mdev = 0.017/0.020/0.023/0.003 ms# ping rsync客戶端
[root@backup ~]# ping 172.16.1.31
PING 172.16.1.31 (172.16.1.31) 56(84) bytes of data.
64 bytes from 172.16.1.31: icmp_seq=1 ttl=64 time=0.866 ms
64 bytes from 172.16.1.31: icmp_seq=2 ttl=64 time=0.310 ms
^C
--- 172.16.1.31 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1014ms
rtt min/avg/max/mdev = 0.310/0.588/0.866/0.278 ms
[root@backup ~]# ping nfs01
PING nfs01 (172.16.1.31) 56(84) bytes of data.
64 bytes from nfs01 (172.16.1.31): icmp_seq=1 ttl=64 time=0.440 ms
64 bytes from nfs01 (172.16.1.31): icmp_seq=2 ttl=64 time=0.354 ms
64 bytes from nfs01 (172.16.1.31): icmp_seq=3 ttl=64 time=0.330 ms
^C
--- nfs01 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2076ms
rtt min/avg/max/mdev = 0.330/0.374/0.440/0.047 ms
3.2 查看rsync軟件包
- 默認(rèn)系統(tǒng)自帶rsync
[root@backup ~]# rpm -qa |grep 'rsync'
rsync-3.1.3-7.ky10.x86_64
rsync-help-3.1.3-7.ky10.noarch
[root@backup ~]# rpm -ql rsync
/etc/rsyncd.conf # rsync服務(wù)端的配置文件
/etc/sysconfig/rsyncd
/usr/bin/rsync
……
3.3 修改配置文件
- 路徑:
/etc/rsyncd.conf
[root@backup ~]# cat /etc/rsyncd.conf
#created by oldboy 15:01 2009-6-5
##rsyncd.conf start##
fake super =yes
uid = rsync
gid = rsync
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
#hosts allow = 10.0.0.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
#####################################
[data]
comment = www by old0boy 14:18 2012-1-13
path = /data
[backup]
comment = www by old0boy 14:18 2012-1-13
path = /backup
3.4 啟動(dòng)服務(wù)
[root@backup ~]# systemctl start rsyncd.service
[root@backup ~]# systemctl enable rsyncd.service
[root@backup ~]# ps -ef |grep [r]sync
root 2106 1 0 18:53 ? 00:00:00 /usr/bin/rsync --daemon --no-detach
[root@backup ~]# ss -lntip |grep [r]sync
LISTEN 0 5 0.0.0.0:873 0.0.0.0:* users:(("rsync",pid=2106,fd=5))
LISTEN 0 5 [::]:873 [::]:* users:(("rsync",pid=2106,fd=6))
3.5 準(zhǔn)備環(huán)境
3.5.1 添加rsync虛擬用戶
[root@backup ~]# id rsync
id: “rsync”:無此用戶
[root@backup ~]# useradd -s /sbin/nologin -M rsync
[root@backup ~]# tail -1 /etc/passwd
rsync:x:1000:1000::/home/rsync:/sbin/nologin
3.5.2 創(chuàng)建rsync_backup用戶的密碼文件
- 密碼文件所有者必須是root用戶,而且只能被root用戶讀寫
echo "rsync_backup:1" >/etc/rsync.password
chmod 600 /etc/rsync.password
3.5.3 創(chuàng)建模塊對(duì)應(yīng)目錄
- rsync程序需要讀寫目標(biāo)目錄,所以要設(shè)置目錄的所屬用戶和所屬組
[root@backup ~]# mkdir /data
[root@backup ~]# chown rsync:rsync /data/
[root@backup ~]# ll /data/ -d
drwxr-xr-x 2 rsync rsync 86 6月 12 11:46 /data/
3.5 服務(wù)端本地測(cè)試
- rsync -avz 需要備份的文件/目錄 rsync用戶名@服務(wù)器ip或主機(jī)名::模塊名稱
-
-a:相當(dāng)于-rlptgoD
- -r:遞歸傳輸目錄及文件
- -l:傳輸軟連接
- -p:保持文件權(quán)限
- -o:保持文件所有者
- -g:保持文件所屬用戶組
- -t:保持修改時(shí)間不變
- -D:–devices 保持設(shè)備文件信息
-
-v:顯示傳輸過程
-
-z:在傳輸過程中壓縮數(shù)據(jù),減少寬帶占用和提高傳輸速度
-
[root@backup ~]# rsync -avz /etc/passwd rsync_backup@backup::data
Password: # 輸出該用戶名的密碼
sending incremental file list
passwdsent 859 bytes received 43 bytes 360.80 bytes/sec
total size is 1,890 speedup is 2.10
[root@backup ~]# ll /data/
-rw-r--r-- 1 rsync rsync 1890 6月 12 10:07 passwd
3.6 客戶端測(cè)試
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@backup::data
Password:
sending incremental file listsent 48 bytes received 20 bytes 15.11 bytes/sec
total size is 311 speedup is 4.57
3.6.1 非交互式備份文件
# 創(chuàng)建密碼文件
[root@nfs01 ~]# echo "1" >/etc/rsync-client.password
# 密碼文件只能被root讀寫
[root@nfs01 ~]# chmod 600 /etc/rsync-client.password
# 備份文件時(shí)指定密碼文件
[root@nfs01 ~]# rsync -avz /etc/hostname rsync_backup@backup::data --password-file=/etc/rsync-client.password
sending incremental file listsent 51 bytes received 20 bytes 142.00 bytes/sec
total size is 6 speedup is 0.08
4. 案例-書寫客戶端定時(shí)備份/etc腳本
- 客戶端將目標(biāo)目錄打包
- rsync備份數(shù)據(jù)
- 客戶端清理舊的打包文件(保留7天)
4.1 為服務(wù)端配置文件添加新模塊
……
[backup]
comment = www by old0boy 14:18 2012-1-13
path = /backup
- 備份的數(shù)據(jù)會(huì)存放到/backup目錄下
4.2 代碼
[root@nfs01 ~]# cat /server/scripts/rsync_backup.sh
#!/bin/bash
##############################################################
# File Name:rsync_backup.sh
# Version:V1.0
# Author:SunKexu
# Organization:www.oldboyedu.com
# Desc:定時(shí)備份
##############################################################
export LANG=en_US.UTF-8
# vars
date=`date +%F_%w` # 時(shí)間
ip=`hostname -I |awk '{print $2}'` # 獲取客戶端ip
bak_dir=/backup/ # 壓縮包存放目錄
# vars rsync 服務(wù)端變量
user=rsync_backup # rsync用戶名
rsync_server_ip=172.16.1.41 # rsync服務(wù)器ip
module_name=backup # rsync的模塊名稱
pass_file=/etc/rsync-client.password # 客戶端的密碼文件路徑# 打包
function package(){# 確定壓縮包存放目錄,若不存在則創(chuàng)建[ ! -d "${bak_dir}${ip}" ] && mkdir -p "${bak_dir}${ip}"# 打包壓縮tar zcf "${bak_dir}${ip}/etc-${date}.tar.gz" /etc/[ $? -eq 0 ] || { # 如果壓縮失敗則退出echo "tar failed"exit 1}
}
# rsync備份數(shù)據(jù)
function rsync_backup(){# rsync傳輸?shù)椒?wù)器rsync -avz "${bak_dir}" "${user}@${rsync_server_ip}::${module_name}" --password-file=${pass_file}[ $? -eq 0 ] || { # 如果傳輸失敗則退出echo "rsync failed"exit 2}
}
# 清理舊的壓縮包
function clean_tar(){# 清理舊的備份find $bak_dir -type f -name "*.tar.gz" -mtime +7 |xargs rm -f
}
# main函數(shù)
function main(){packagersync_backupclean_tar
}# command
main
[root@nfs01 ~]# bash /server/scripts/rsync_backup.sh
tar: Removing leading `/' from member names
sending incremental file list
172.16.1.31/etc-2025-06-12_4.tar.gzsent 163 bytes received 13,928 bytes 28,182.00 bytes/sec
total size is 5,349,099 speedup is 379.61
[root@nfs01 ~]# ll /backup/172.16.1.31/
總用量 5224
-rw-r--r-- 1 root root 5349099 6月 12 20:05 etc-2025-06-12_4.tar.gz
- 再查看服務(wù)端是否有壓縮包
[root@backup ~]# ll /backup/172.16.1.31/
總用量 5224
-rw-r--r-- 1 rsync rsync 5349099 6月 12 20:05 etc-2025-06-12_4.tar.gz
- 服務(wù)端和客戶端的壓縮包時(shí)間一致,代碼運(yùn)行成功
4.3 添加cron任務(wù)
crontab -e
0 0 * * * bash /server/scripts/rsync_backup.sh >/dev/null 2>&1
5. 思維導(dǎo)圖
【金山文檔】 思維導(dǎo)圖 https://www.kdocs.cn/l/co3I7PtpTYQX