通过定时任务+sh脚本方式实现服务器日志文件异机备份

需求:

等保要求服务器A日志(服务器、数据库、后端、nginx、redis等)备份在另外一台服务器B上

实现原理

通过定时任务+sh脚本+scp命令,实现定时执行脚本,将文件备份到另外一台服务器上

例子:

step1、准备工作

服务器A ipA
服务器B ipB

step2、脚本命令backup.sh

服务器A上,以nginx日志为例

#! /bin/sh
DATE=`date +%Y%m%d`
BAK_NAME=nginx_error_${DATE}.out
scp -P 22 /usr/local/nginx/logs/error.log root@ipB:/data/bak/nginx/${BAK_NAME}

step3、配对秘钥

由于直接执行上述命令需要与服务器B建立连接,还需要输入密码操作,所以要解决SCP命令输入密码的问题
同样在服务器A中:
①主机A生成配对秘钥,在root目录下执行:

ssh-keygen -t rsa

②将 .ssh 目录中的 id_rsa.pub 文件复制到 主机B 的 ~/.ssh/ 目录中,并改名为 authorized_keys:

scp ~/.ssh/id_rsa.pub ipB:/root/.ssh/authorized_keys

step4、设置定时任务:

crontab -e
00 17 * * * /backup.sh >> /backup.txt 2>&1 &
crontab -l

出现问题:
①无权限:

sudo chmod +777 /Map/social_control/social_control.sh

②/bin/sh^M: bad interpreter: No such file or directory
编码格式问题,通过vi backup.sh | :set ff=unix(回车)| :wq 系列命令即可解决

你可能感兴趣的:(脚本,服务器,服务器,github,运维)