如何备份Web服务器

时间:2020-01-09 10:38:56  来源:igfitidea点击:

问题描述:我正在使用基于Red Hat Enterprise Linux的Apache Web服务器。
如何将我的Apache Web服务器,MySQL和PostgreSQL数据库备份到另一个名为/backup的磁盘,然后将其复制到另一个名为backup.example.com的异地备份ssh服务器?

解决方法:在Linux/UNIX下有许多工具可以备份Web服务器。
您可以创建一个简单的Shell脚本以将所有内容备份到/backup目录。
您还可以使用ssh和scp工具在异地复制/backup目录内容。

步骤1:创建/root/backup.sh脚本

使用以下shell脚本(下载链接):

#!/bin/bash
# A Simple Shell Script to Backup Red Hat / CentOS / Fedora / Debian / Ubuntu Apache Webserver and SQL Database
# Path to backup directories
DIRS="/home/Hyman/ /var/www/html/ /etc"
 
# Store todays date
NOW=$(date +"%F")
 
# Store backup path
BACKUP="/backup/$NOW"
 
# Backup file name hostname.time.tar.gz 
BFILE="$(hostname).$(date +'%T').tar.gz"
PFILE="$(hostname).$(date +'%T').pg.sql.gz"
MFILE="$(hostname).$(date +'%T').mysql.sq.gz"
 
# Set Pgsql username
PGSQLUSER="Hyman"
 
# Set MySQL username and password
MYSQLUSER="Hyman"
MYSQLPASSWORD="myPassword"
 
# Remote SSH server setup
SSHSERVER="backup.example.com" # your remote ssh server
SSHUSER="Hyman"                # username   
SSHDUMPDIR="/backup/remote"    # remote ssh server directory to store dumps
 
# Paths for binary files
TAR="/bin/tar"
PGDUMP="/usr/bin/pg_dump"
MYSQLDUMP="/usr/bin/mysqldump"
GZIP="/bin/gzip"
SCP="/usr/bin/scp"
SSH="/usr/bin/ssh"
LOGGER="/usr/bin/logger"
 
 
# make sure backup directory exists
[ ! -d $BACKUP ] && mkdir -p ${BACKUP} 
 
# Log backup start time in /var/log/messages
$LOGGER "
# crontab -e
: *** Backup started @ $(date) ***"   # Backup websever dirs $TAR -zcvf ${BACKUP}/${BFILE} "${DIRS}"   # Backup PgSQL $PGDUMP -x -D -U${PGSQLUSER} | $GZIP -c > ${BACKUP}/${PFILE}   # Backup MySQL $MYSQLDUMP -u ${MYSQLUSER} -h localhost -p${MYSQLPASSWORD} --all-databases | $GZIP -9 > ${BACKUP}/${MFILE}   # Dump all local files to failsafe remote UNIX ssh server / home server $SSH ${SSHUSER}@${SSHSERVER} mkdir -p ${SSHDUMPDIR}/${NOW} $SCP -r ${BACKUP}/* ${SSHUSER}@${SSHSERVER}:${SSHDUMPDIR}/${NOW}   # Log backup end time in /var/log/messages $LOGGER "
@midnight /root/backup.sh
: *** Backup Ended @ $(date) ***"

根据您的需要对其进行自定义,设置用户名,密码,ssh设置和其他内容。

步骤2:创建ssh密钥

创建ssh密钥,以减少从服务器登录到自己家中或另一个数据中心托管的另一台异地服务器的密码。

解决方法:

  • Howto Linux/UNIX使用DSA公共密钥身份验证(无密码登录)设置SSH
  • SSH基于公钥的身份验证方法

步骤3:创建Cron作业

设置一个cronjob每天备份服务器,执行:

##代码##

每天午夜将以下代码添加到备份服务器:

##代码##