Linux Shell脚本自动定时备份服务器应用程序目录、数据库目录、Nginx目录或单个文件等到其他服务器上

背景:需要定期对服务器上的应用程序、Nginx、Redis等重要目录备份,以便服务器损坏可通过备份文件实现快速恢复。

1、安装zip压缩包程序

sudo yum install -y zip

2、安装ftp客户端程序

sudo yum install -y ftp

3、创建备份脚本

vi server_backup.sh

4、脚本执行权限

chmod +x server_backup.sh

5、备份文件、目录的shell脚本server_backup.sh

#! /bin/bash
#当前服务器ip
ip='192.168.1.1'
# 备份的所有目录或文件,用空格隔开
dirs='/etc/nginx /etc/redis.conf /data/website'

#获取系统当前时间,后续将作为备份文件名后缀
time=`date +%Y%m%d_%H%M%S`
#备份路径文件
backupFileName='server_backup_'${ip}'_'${time}'.zip'
# zip压缩包密码
zippwd='123456'

#进入应用程序部署所在位置,并压缩
zip -r -q -x='*.log' -x='*.out' -P ${zippwd} ${backupFileName} ${dirs}

#连接ftp, -v 禁止显示远程服务器响应。-n 禁止自动登录到初始连接。
ftp -v -n << EOF
 #ftp ip地址
 open 192.168.1.2
 #登陆ftp的账号密码
 user root 123456
 #指定传输模式
 binary
 #切换ftp目录               
 cd /backup
 #上传上方生成的压缩包到上一步骤进入的目录      
 put ${backupFileName}
 #退出ftp,这一句不写,上传完成后也可以正常退出 
 quit                                        
EOF
#删除本地的压缩包,服务器节约空间
rm -f ${backupFileName}

设置定时任务

  • 添加定时任务
crontab -e
  • 设置时间策略

0 1 * * 1 /home/test/server_backup.sh

你可能感兴趣的:(Linux Shell脚本自动定时备份服务器应用程序目录、数据库目录、Nginx目录或单个文件等到其他服务器上)