CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中

下面是CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中的完整攻略。

1. 准备工作

在开始之前,我们需要先进行一些准备工作。

1.1 安装必要的软件

首先,我们需要安装一些必要的软件,包括mysqldumptarftp等。可以使用以下命令进行安装:

yum install mysql mysql-server mysql-devel mysqldump tar ftp -y

1.2 创建FTP账户和目录

接下来,我们需要创建一个FTP账户,并且在FTP服务器上创建一个用于存放备份文件的目录。我们可以使用以下命令来进行创建:

useradd ftpuser   # 创建FTP账户
passwd ftpuser    # 设置FTP账户密码

mkdir /home/ftpuser/backup   # 在FTP账户的家目录下创建备份目录

注:上述命令中,FTP账户的用户名为ftpuser,备份目录的路径为/home/ftpuser/backup,可以根据实际情况进行修改。

1.3 创建Shell脚本文件

最后,我们需要创建一个Shell脚本文件,用于实现自动备份并上传到FTP的操作。可以使用以下命令进行创建:

cd /usr/local/bin   # 进入/usr/local/bin目录

touch backup.sh     # 创建备份脚本文件
chmod +x backup.sh  # 赋予执行权限

vi backup.sh        # 编辑备份脚本文件

2. 编写Shell脚本

在创建完备份脚本文件后,我们需要对其进行编辑,并将备份和上传的操作添加到其中。

以下是一个示例备份脚本文件:

#!/bin/sh

# 配置备份相关参数
MYSQL_USER="root"
MYSQL_PASSWORD="mypassword"
MYSQL_DATABASE="mydatabase"
BACKUP_DIR="/opt/backups"
FTP_SERVER="ftp.example.com"
FTP_USER="ftpuser"
FTP_PASSWORD="ftppassword"
FTP_DIR="backup"

# 获取当前时间作为备份文件名
DATE=$(date +%Y%m%d)

# 创建备份目录
mkdir -p $BACKUP_DIR

# 备份数据库
mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE > $BACKUP_DIR/$MYSQL_DATABASE-$DATE.sql

# 压缩备份文件
tar -zcvf $BACKUP_DIR/$MYSQL_DATABASE-$DATE.tar.gz $BACKUP_DIR/$MYSQL_DATABASE-$DATE.sql

# 删除备份文件
rm -f $BACKUP_DIR/$MYSQL_DATABASE-$DATE.sql

# 上传备份文件到FTP服务器
ftp -n <<EOF
open $FTP_SERVER
user $FTP_USER $FTP_PASSWORD
binary
cd $FTP_DIR
put $BACKUP_DIR/$MYSQL_DATABASE-$DATE.tar.gz
bye
EOF

在上述脚本中,我们使用了mysqldump命令来备份指定数据库,然后使用tar命令将备份文件压缩为一个tar.gz文件,并最终使用ftp命令将备份文件上传到FTP服务器上指定目录。

3. 配置定时任务

最后,我们需要将备份脚本文件和FTP账户的信息配置到定时任务中,以便每天定时执行备份操作。

可以使用以下命令来编辑定时任务:

crontab -e

将以下内容添加到文件末尾:

0 2 * * * /usr/local/bin/backup.sh

上述定时任务表示,在每天凌晨两点钟自动执行备份脚本文件/usr/local/bin/backup.sh

示例说明:

在这里我们来说明一下备份文件和上传的过程,假设备份的文件是/var/www/html/下的所有文件和MySQL数据库的文件,FTP的服务器地址是example.com,FTP的用户名是ftpuser,密码为ftppassword,上传到FTP服务器的目录是backup下,详细过程如下:

  1. 编辑/usr/local/bin/backup.sh文件
vi /usr/local/bin/backup.sh

在文件中添加如下内容:

#!/bin/sh

# 配置备份相关参数
MYSQL_USER="root"
MYSQL_PASSWORD="mypassword"
MYSQL_DATABASE="mydatabase"
BACKUP_DIR="/opt/backups"
FTP_SERVER="example.com"
FTP_USER="ftpuser"
FTP_PASSWORD="ftppassword"
FTP_DIR="backup"

# 获取当前时间作为备份文件名
DATE=$(date +%Y%m%d)

# 创建备份目录
mkdir -p $BACKUP_DIR

# 配置参数
BACKUP_SERVER="/var/www/html"

# 备份网站程序源码
if [ ! -d ${BACKUP_DIR}/websource-${DATE} ]; then
  mkdir -p ${BACKUP_DIR}/websource-${DATE}
fi

if [ ! -d /tmp/websource ]; then
  mkdir -p /tmp/websource
fi

# 静态文件存放目录 static files
cp -r ${BACKUP_SERVER}/static /tmp/websource/

# 媒体文件存放目录 media files
cp -r ${BACKUP_SERVER}/media /tmp/websource/

# 主程序源码存放目录 project source code
cp -r ${BACKUP_SERVER}/* /tmp/websource/

# 移动文件至 每天备份目录
mv /tmp/websource/* ${BACKUP_DIR}/websource-${DATE}

# 备份数据库
mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE > $BACKUP_DIR/$MYSQL_DATABASE-$DATE.sql

# 压缩备份文件
tar -zcvf $BACKUP_DIR/${MYSQL_DATABASE}-${DATE}.tar.gz ${BACKUP_DIR}

# 删除备份目录
rm -rf ${BACKUP_DIR}/websource-${DATE}
rm -f $BACKUP_DIR/$MYSQL_DATABASE-$DATE.sql

# 上传备份文件到FTP服务器
ftp -n <<EOF
open $FTP_SERVER
user $FTP_USER $FTP_PASSWORD
binary
cd $FTP_DIR
put $BACKUP_DIR/${MYSQL_DATABASE}-${DATE}.tar.gz
bye
EOF
  1. 将备份脚本文件和FTP账户的信息配置到定时任务中,以便每天定时执行备份操作。
crontab -e

将以下内容添加到文件末尾:

0 2 * * * /usr/local/bin/backup.sh

上述定时任务表示,在每天凌晨两点钟自动执行备份脚本文件/usr/local/bin/backup.sh

执行完这个脚本后,将会在/opt/backups目录下生成一个以日期为名的文件夹,文件夹内存放了你备份的代码和数据库,数据库备份文件将会以.sql文件存在。MySQL数据库恢复操作,进入mysql数据库操作如下:

//创建数据库user库
mysql> CREATE DATABASE user;

// 进去user库,执行备份恢复操作
mysql> use user;
mysql> source path/user-20210402.sql;

关于FTP的上传,在备份文件上传到FTP服务器上指定目录,可以使用一下操作获得文件,也可以使用文件下载工具将文件下载下来本地进行查看。

ftp example.com
# 输入用户名和密码
ftpuser
ftppassword
cd backup
ls

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • Centos 7 下的 Zabbix3.4 安装步骤详解

    Centos 7 下的 Zabbix3.4 安装步骤详解 1. 安装必备软件 在安装 Zabbix 之前,先安装必要的软件:LAMP 和 SNTP。 1.1 LAMP 软件包的安装 首先安装 Apache2,MariaDB 和 PHP。 yum install -y httpd mariadb-server mariadb php php-mysql php…

    database 2023年5月22日
    00
  • Oracle中实现删除重复数据只保留一条

    在Oracle数据库中实现删除重复数据只保留一条的操作,可以通过使用以下步骤来完成。 1. 确认重复数据 首先,需要确认重复数据,并确定哪些数据需要删除。在Oracle中,可以使用以下查询语句来查找重复数据: SELECT column1, column2, count(*) as count FROM table_name GROUP BY column1…

    database 2023年5月21日
    00
  • Oracle中命名块之存储过程的详解及使用方法

    Oracle中命名块之存储过程的详解及使用方法 什么是存储过程? 存储过程是一种事先编译好的数据库对象,它是一组SQL语句集(或PL/SQL),可以封装操作,具有以下优点: 降低了网络流量,减少了客户端的工作量。 可以增加公共代码段,简化了维护和管理。 可以重复利用,提高了执行效率。 可以保护数据的完整性和安全性。 存储过程的创建 语法格式如下: CREAT…

    database 2023年5月21日
    00
  • 一起raid数据恢复及回迁成功的案例

    关于“一起raid数据恢复及回迁成功的案例”的攻略,我将分为以下几个步骤进行讲解: 1. 了解 RAID RAID是指“Redundant Array of Independent Disks”,也就是独立磁盘冗余阵列。它通过将多块硬盘组合成一个数据存储单元,以提高数据读写速度和数据冗余度。因此,在操作 RAID 时,我们需要清楚其不同的级别和操作方式,包括…

    database 2023年5月22日
    00
  • MYSQL安装配置文件my-small.ini、my-medium.ini、my-large.ini、my-huge.ini文件的作用 my-small.ini、my-medium.ini、my-large.ini、my-huge.ini文件的作用

      安装完mysql之后或者是下载的免安装版解压之后,默认是没有my.ini文件的.但是,有几个类似的文件,如my-small.ini、my-medium.ini、my-large.ini、my-huge.ini。这几个文件是mysql针对不同的应用推荐的不同的配置信息;但这些配置只有放到my.ini中才会被应用。其中:1、my-small.ini是为了小型…

    MySQL 2023年4月12日
    00
  • 解决SQL SERVER数据库备份时出现“操作系统错误5(拒绝访问)。BACKUP DATABASE 正在异常终止。”错误的解决办法

    当我们在SQL SERVER中备份数据库时,有时会遇到错误提示“操作系统错误5:拒绝访问”。这种情况下,我们无法对数据库进行备份。造成这种错误的原因可能是我们没有足够的权限或者备份路径不正确。 下面是解决“操作系统错误5:拒绝访问”错误的完整攻略: 一、检查数据库备份路径及权限 1.检查备份路径 首先要确认备份文件夹所在路径是否正确,同时可在电脑上新建一个文…

    database 2023年5月21日
    00
  • oracle在导入数据时报600错误的解决方法

    Oracle导入数据时报600错误的解决方法 什么是Oracle 600错误? 在使用Oracle数据库时,导入数据时可能会出现ORA-00600错误,这是Oracle内部错误,一般是由于内存或其他的bug引起的。具体错误信息如下: ORA-00600: internal error code, arguments: [%s], [%s], [%s], [%…

    database 2023年5月18日
    00
  • MySQL5.6 GTID模式下同步复制报错不能跳过的解决方法

    这里我来为大家详细讲解MySQL5.6 GTID模式下同步复制报错不能跳过的解决方法的完整攻略。 1. 背景介绍 在MySQL数据库中,GTID是用于跟踪复制事务的全局唯一标识符。在MySQL5.6及其以上版本中,使用GTID复制模式可以避免数据不一致等问题。 然而,有时候在使用GTID模式下进行同步复制时,可能会出现以下报错: Error ‘Could n…

    database 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部