crontab
crontab是linux系統自帶的定時調度軟件,可用于設置周期性被執行的指令,一般用在每天的非高峰負荷時間段運行作業,可在無需人工干預的情況下運行作業。支持在一周或一月中的不同時段運行。
crontab命令允許用戶提交、編輯或刪除相應的作業。每一個用戶都可以有一個crontab文件來保存調度信息。服務器備份文件,我們要用crontab執行周期性的備份工作。
sshpass
sshpass 可在不直接輸入密碼的情況下,通過 SSH 連接到遠程主機并執行命令。與手動輸入憑據相比,sshpass 避免了手動輸入密碼,提高自動化流程的執行效率。兩臺服務器之間互相備份文件,要用到sshpass連接并傳輸文件。
步驟
1、創建sh文件,如下:
#!/bin/sh
source?/etc/profile#設置備份的源文件夾
backup_source=/home/admin/sh
#設置目的服務器地址
remote_username=admin
remote_ip=10.10.11.60
remote_password=qwer123
remote_folder=/home/admin/sk#創建備份的緩存文件夾backup_home
backup_home=/home/admin/backup_home
if [ ! -d ${backup_home} ];thenmkdir ${backup_home}if [ $? -eq 0 ]; thenecho "緩存文件夾創建成功"elseecho "緩存文件夾創建失敗"exit 1fi
elseecho "緩存文件夾已經存在"
fi#壓縮文件到backup_home
date=$(date +%Y%m%d)
zip -q -r ${backup_home}/${date}.zip ${backup_source}
if [ $? -eq 0 ]; thenecho "文件壓縮成功"
elseecho "文件壓縮失敗"exit 1
fi#從本地復制到遠程
sshpass -p ${remote_password} scp ${backup_home}/${date}.zip ${remote_username}@${remote_ip}:${remote_folder}
if [ $? -eq 0 ]; thenecho "從本地復制到遠程成功"
elseecho "從本地復制到遠程失敗"exit 1
fi#刪除backup_home下超過7天的zip文件
find ${backup_home} -mtime +7 -name "*.zip" -exec rm -rf {} \;
這是一個可執行的sh文件。注意:該文件創建后,需要用chmod對此文件授權為“可執行文件”,如下:
//test.sh 是文件名
chmod +x test.sh
2、安裝sshpass
yum install sshpass
3、將sh命令文件加入crontab的運行周期
//添加周期性任務
crontab -e//進入編輯狀態
35 * * * * /home/admin/sd/test.sh >> /home/admin/backup_home/log.txt//重啟crontab
systemctl restart crond.service
4、對服務器互相傳輸文件動作進行授權。
?注意:這一步不能省略。否則,crontab執行任務時會因為未授權而傳輸文件失敗。一定要先授權,再讓crontab啟動備份任務。
成果展示:
?