CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中
在Linux服务器管理中,定期备份是一项至关重要的任务,以防止数据丢失或系统故障。本文将详细介绍如何在CentOS操作系统中使用Shell脚本来自动化备份网站文件和数据库,并将这些备份上传到FTP服务器。这个方法同样适用于其他Linux发行版。 我们需要安装必要的软件组件: 1. **Email发送程序**:在CentOS中,可以使用`yum install sendmail mutt`来安装sendmail和mutt。这两个工具允许脚本将备份文件作为附件通过邮件发送,以便在需要时进行恢复。 2. **FTP客户端程序**:由于我们需要将备份文件上传到FTP服务器,所以需要安装FTP客户端。在CentOS中,可以使用`yum install ftp`来安装FTP命令行客户端。 接下来,我们创建一个名为`AutoBackupToFtp.sh`的Shell脚本文件,放在`/root`目录下,其内容如下: ```bash #!/bin/bash # 定义变量 MYSQL_USER=root MYSQL_PASS=123456 MAIL_TO=xxxxx@gmail.com FTP_USER=ftpuser FTP_PASS=ftpuserpassword FTP_IP=xxx.xxx.xxx.xxx FTP_backup=backup WEB_DATA=/home/wwwroot # 定义备份文件名 DataBakName=Data_$(date +"%Y%m%d").tar.gz WebBakName=Web_$(date +"%Y%m%d").tar.gz OldData=Data_$(date -d -5day +"%Y%m%d").tar.gz OldWeb=Web_$(date -d -5day +"%Y%m%d").tar.gz # 删除3天前的本地备份 rm -rf /home/backup/${OldData} /home/backup/${OldWeb} # 导出数据库并压缩 cd /home/backup for db in $(/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs); do (/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz) done tar zcf /home/backup/${DataBakName} /home/backup/*.sql.gz rm -rf /home/backup/*.sql.gz # 发送数据库备份到邮件 echo "Content:This email is auto send by vps..." | mutt -a /home/backup/${DataBakName} -s "Subject:VPS Database Backup" $MAIL_TO # 压缩网站数据 tar zcf /home/backup/${WebBakName} $WEB_DATA # 上传到FTP服务器并删除5天前的备份 ftp -v -n $FTP_IP << END user $FTP_USER $FTP_PASS binary cd $FTP_backup delete $OldData delete $OldWeb put $DataBakName put $WebBakName bye END ``` 脚本中,我们使用了`mysqldump`命令来导出数据库,并用`gzip`压缩,然后将所有数据库备份合并到一个大的`.tar.gz`文件中。接着,我们对网站文件进行压缩,并使用FTP命令行客户端`ftp`将这两个备份文件上传到FTP服务器。同时,删除FTP服务器上5天前的旧备份以节省存储空间。 为了让脚本每天自动执行,我们使用`crontab`来设置定时任务。运行`crontab -e`编辑crontab配置,并添加以下行: ```bash 00 02 * * * /root/AutoBackupToFtp.sh ``` 这行表示在每天的凌晨2点0分执行`AutoBackupToFtp.sh`脚本。可以根据需要调整时间。 赋予脚本执行权限: ```bash chmod 774 /root/AutoBackupToFtp.sh ``` 这样就完成了整个自动化备份流程。在CentOS或其他Linux系统中,这种Shell脚本的使用能确保网站文件和数据库的安全,即使遇到问题也能迅速恢复。同时,通过FTP上传备份到远程服务器,提高了数据安全性,避免了单点故障的风险。
- 粉丝: 2
- 资源: 942
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Spring Boot和Vue的后台管理系统.zip
- 用于将 Power BI 嵌入到您的应用中的 JavaScript 库 查看文档网站和 Wiki 了解更多信息 .zip
- (源码)基于Arduino、Python和Web技术的太阳能监控数据管理系统.zip
- (源码)基于Arduino的CAN总线传感器与执行器通信系统.zip
- (源码)基于C++的智能电力系统通信协议实现.zip
- 用于 Java 的 JSON-RPC.zip
- 用 JavaScript 重新实现计算机科学.zip
- (源码)基于PythonOpenCVYOLOv5DeepSort的猕猴桃自动计数系统.zip
- 用 JavaScript 编写的贪吃蛇游戏 .zip
- (源码)基于ASP.NET Core的美术课程管理系统.zip