1. 程式人生 > 其它 >Linux啟動服務命令 Linux啟動服務命令啟動tomcat服務

Linux啟動服務命令 Linux啟動服務命令啟動tomcat服務

rsync資料備份

1.rsync概述

	rsync(remote synchronizetion)具有本地和遠端兩臺主機之間的資料快速複製同步映象和遠端備份的功能類似於scp命令,但scp每次都是全量拷貝,而rsync可以增量拷貝。
	rsync的監聽埠:873,rsync執行架構:C/S(Client/Sever)

2.備份型別

1.全量備份:
	每一次都是將資料全部備份出來
2.增量模式:
	基於上一次的備份,將新增的資料備份出來
3.差異備份:
	基於全量備份,將後面新增的資料備份出來

3.rsync傳輸模式

1.本地模式:
	單個主機之間的資料傳輸,類似於cp命令:
	語法:
		rsync [選項] 原始檔 目標路徑
2.遠端模式:
	通過ssh通道在兩臺主機中傳輸資料,類似於scp命令
	語法:
		拉:rsync [選項] [使用者名稱@]主機IP:原始檔路徑 本機目錄
		推:rsync [選項] 本機的原始檔 [使用者名稱@]主機IP:目標路徑
3.守護程序模式:
	把rsync當成服務啟動
	語法:
		拉:rsync [選項] [使用者名稱@]主機IP::配置檔案中的模組名 本機目錄
		推:rsync [選項] 本機原始檔 [使用者名稱@]主機IP::配置檔案中的模組名

4.使用守護程序的好處

1.守護程序不需要ssh協議,服務啟動後自帶埠
2.守護程序可以設定匿名使用者,不需要使用系統使用者

5.rsync選項

-a:歸檔模式傳輸,等於-tropgDl
-t(time):保持檔案的時間資訊
-r:遞迴拷貝
-o(owner):保持檔案的屬主資訊
-g(group):保持檔案的屬組資訊
-p(perm):保持檔案的許可權資訊
-D(device):保持裝置檔案的資訊
-l(link):保留軟連結
-v:顯示同步過程
-P:顯示進度
-L:保留軟連結指向的目標檔案
--exclude=PATTERN:排除指定的檔案模式
--exclude-form=file:排除指定的檔案
--bwlimit=1:限速傳輸
--partial:斷點續傳
--delete:資料同步
--password-file=:指定密碼檔案

6.rsync備份實戰

先準備兩臺主機:

主機名 WanIP LanIP 角色
web01 10.0.0.7 172.16.1.7 rsync客戶端
backup 10.0.0.41 172.16.1.41 rsync服務端

6.1服務端操作

1.先安裝rsync:yum install -y rsync
2.配置rsync的配置檔案:vim /etc/rsyncd.conf,加入下段內容
	# 服務的使用者
    uid = rsync
    # 服務的使用者組
    gid = rsync
    # 該服務的監聽埠
    port = 873
    # 不以root身份執行,傳輸資料不使用系統使用者
    fake super = yes
    # 禁錮目錄,不允許獲取到root許可權
    use chroot = no
    # 最大連線數
    max connections = 200
    # 超時時間
    timeout = 600
    # 忽略錯誤資訊
    ignore errors
    # 設定成可讀可寫,關閉只讀功能
    read 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.建立配置檔案中的系統使用者:
	useradd rsync -s /sbin/nologin -M
4.建立服務端的密碼檔案:
	1.vim /etc/rsync.passwd
		rsync_backup:123
	2.echo 'rsync_backup:123'>/etc/rsync.passwd
5.修改密碼檔案的許可權為600:
	chmod 600 /etc/rsync.passwd
6.建立備份目錄:
	mkdir /backup
7.修改目錄的屬主和屬組:
	chown rsync:rsync /backup/
8.啟動rsync服務並加入開機自啟:
	systemctl start rsyncd
	systemctl enable rsyncd
9.檢查服務程序和服務埠:
	ps -ef|grep [r]sync
	netstat -lnutp|grep 873

6.2客戶端操作

1.安裝rsync:yum install -y rsync
2.客戶端建立密碼檔案(客戶端的密碼檔案只需要寫密碼):
	1.vim /etc/rsync.passwd
		123
	2.echo '123'>/etc/rsync.passwd
3.修改客戶端的密碼檔案的許可權:
	chmod 600 /etc/rsync.passwd
4.推資料檢測服務端是否能夠接受到資料:
	 rsync -avz /tmp [email protected]::backup --password- file=/etc/rsync.passwd
5.也可以使用環境變數免互動輸入密碼:
	export RSYNC_PASSWORD=123
	rsync -avz /tmp [email protected]::backup

6.3客戶端推資料報錯情況

推:rsync [option..] 原檔案 [使用者名稱@]主機IP::模組名 
rsync -avz /etc/passwd [email protected]::backup rsync -avz /etc/passwd [email protected]::backup ## 報錯
## 使用者密碼認證失敗 
[root@web01 ~]# rsync -avz /etc/passwd [email protected]::backup
Password: @ERROR: auth failed on module backup rsync error: error starting client-server protocol (code 5) at main.c(1649) [sender=3.1.2] 
1.使用者輸入錯誤
2.密碼輸入錯誤 
3.密碼檔案的許可權不是600
[root@web01 ~]# rsync -avz /etc/passwd [email protected]::bak 
@ERROR: Unknown module 'bak' rsync error: error starting client-server protocol (code 5) at main.c(1649) [sender=3.1.2]
1.模組名不認識
[root@web01 ~]# rsync -avz /etc/passwd [email protected]::backup
rsync: failed to connect to 172.16.1.41 (172.16.1.41): No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(125) [sender=3.1.2] 
無法和172.16.1.41rsync服務建立連線 
1.防火牆和selinux開啟
2.服務沒有啟動 
3.服務的埠更改

6.4排錯過程

服務端
1.檢測配置檔案是否錯誤:
	cat /etc/rsyncd.conf
2.檢查密碼檔案的許可權是否更改:
	ll /etc/rsync.passwd
3.檢查密碼檔案中的使用者名稱是否和配置檔案中的一致
4.檢查模組目錄的屬主和屬組是否是配置檔案中uid和gid指定的一樣
客戶端
1.檢查命令使用者名稱是否跟服務端的配置檔案的使用者名稱一致:rsync_backup
2.檢查命令中的模組名是否跟服務端配置檔案的模組名一致:backup
3.如果有密碼檔案,則檢查許可權是否為600
4.檢查密碼檔案中的內容
5.檢查環境變數中的密碼是否和服務端裡的密碼檔案保持一致

7.企業級備份案例

7.1.環境準備

主機名 WanIP LanIP 角色
web01 10.0.0.7 172.16.1.7 rsync客戶端
nfs 10.0.0.31 172.16.1.31 rsync客戶端
backup 10.0.0.41 172.16.1.41 rsync服務端

7.2.先決條件

1.時間同步
crontab -e
*/5 * * * * /usr/sbin/ntpdate time1.aliyun.com >/dev/null
2.關閉防火牆和selinux:
	systemctl stop firewalld:臨時關閉
	systemctl disable firewalld:永久關閉
	setenforce 0:臨時關閉
	sed -i 's#selinux=enforcing#selinux=disabled#g' /etc/sysconfig/selinux:永久關閉

7.3.客戶端需求

1.客戶端提前準備存放的備份的目錄,目錄規則如下: /client_backup
2.客戶端在本地打包備份(系統配置檔案、應用配置等)拷貝至 /client_backup 包名: nfs_172.16.1.31_2022-05- 16.tar.gz
3.客戶端最後將備份的資料進行推送至備份伺服器
4.客戶端每天凌晨1點定時執行該指令碼
5.客戶端伺服器本地保留最近7天的資料, 避免浪費磁碟空間

7.4.服務端需求

1.服務端部署rsync,用於接收客戶端推送過來的備份資料
2.服務端需要每天校驗客戶端推送過來的資料是否完整
3.服務端需要每天校驗的結果通知給管理員
4.服務端僅保留6個月的備份資料,其餘的全部刪除

7.5.指令碼實現客戶端需求

# /bin/bash
bak="/client_backup"
host_name=`hostname`
IP=`ifconfig eth1 |awk 'NR==2{print $2}'`
date_time=`date +%F`
export RSYNC_PASSWORD=123
# 1.建立客戶端的備份目錄
mkdir -p $bak
# 2.進入備份目錄,壓縮備份檔案
cd /etc && tar -zcf 
$bak/${host_name}_${IP}_${date_time}.tar.gz passwd
# 3.生成校驗檔案
cd $bak && \
md5sum ${host_name}_${IP}_${date_time}.tar.gz > ${host_name}_${IP}_${date_time}.md5
# 4.推送資料到rsync服務端
rsync -avz $bak/ [email protected]::backup
# 5.保留七天的檔案
find $bak -type f ! -mtime -7|xargs rm -f

7.6指令碼實現服務端的需求

1.服務端部署rsync,用於接收客戶端推送的資料:vim /etc/rsyncd.conf
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read 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
2.配置郵件
	2.1:安裝發郵件服務:yum install -y mailx
	2.2:修改配置檔案:vim/etc/mail.rc
		set bsdcompat
        set from=傳送郵件的郵箱
        set smtp=smtps://smtp.qq.com:465
        set smtp-auth-user=傳送郵件的郵箱
        set smtp-auth-password=授權碼
        set smtp-auth=login
        set ssl-verify=ignore
        set nss-config-dir=/etc/pki/nssdb/
4.編寫指令碼:
	bak="/backup"
    host_name=`hostname`
    date_time=`date +%F`
    # 進入到接收檔案目錄並校驗檔案的結果傳送到管理員的郵箱中
    cd ${bak} && \
    md5sum -c *${date_time}.md5|mail -s "${date_time}_資料備份校驗" 管理員郵箱
    服務端只保留180天的備份資料
    find $bak -type f ! -mtime -180 |xargs rm -f

7.8 將指令碼放入到定時任務中

# 客戶端定時任務:
    crontab -e
    #Usage:date_backup By:jl Date:2022/5/16
    00 01 * * * /bin/sh /root/backup.sh > /dev/null
# 服務端定時任務:
	crontab -e
	#Usage:date_backup By:jl Date:2022/5/16
	01 01 * * * /bin/bash /root/check_md5.sh > /dev/null
## 先設定一分鐘來檢測定時任務是否設定成功,如果傳送了郵箱並且是想要的結果就可以設定成凌晨一點備份資料