其实服务器备份最好用的是 rsync ,具体教程可以看: rsync 教程
但由于各种条件限制, ftp 在 windows 下的配置也比 rsync 简单,也更适合大部分人。今天就分享个我自用的 ftp 备份代码。每天把数据库和网站压缩后传到指定的 ftp ,并删除 7 天前的文件,就是只备份 7 天的数据。具体情况大家可以根据配置文件修改。有问题可以留言,我尽量解答。
步骤一:下载代码
代码下载地址: https://github.com/91yun/code/blob/master/ftp_backup.sh
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export PATH
#==============================================
#www.9yun.org 备份数据相关设置
#==============================================
# 数据库用户名
dbuser='root'
# 数据库用密码
dbpasswd='rootpassword'
# 需要备份的数据库,多个数据库用空格分开
dbname='91yun'
# 要备份的网站地址
webbakpath='/home/wwwroot/www.91yun.org'
# 备份时间
backtime=`date +%Y%m%d`
# 删除备份的时间(保留 7 天)
deldate=` date -d -7day +%Y%m%d `
# 数据备份路径
datapath='/home/bak/www.91yun.org'
mkdir -p $datapath
#==============================================
#www.9yun.orgFTP 相关设置
#==============================================
#ftp 地址
ftpserver='www.91yun.org'
#ftp 端口
ftpprot='21'
#ftp 用户名
ftpuser='www.91yun.org'
#ftp 密码
ftppassword='www.91yun.org'
#==============================================
#www.9yun.org 开始备份
#==============================================
# 正式备份数据库
for table in $dbname; do
source=`mysqldump -u ${dbuser} -p${dbpasswd} ${table}> ${datapath}/${backtime}.sql` 2>> ${datapath}/mysqllog.log;
# 备份成功以下操作
if [ "$?" == 0 ];then
cd $datapath
# 为节约硬盘空间,将数据库压缩
tar jcf ${table}${backtime}.tar.bz2 ${backtime}.sql > /dev/null
# 同时压缩打包网站程序
tar jcf ${table}web${backtime}.tar.bz2 ${webbakpath}/ > /dev/null
# 删除原始文件,只留压缩后文件
rm -f ${datapath}/${backtime}.sql
# 删除七天前备份,也就是只保存 7 天内的备份
find $datapath -name "*.tar.bz2" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
fi
done
#==============================================
#www.9yun.org 开始 FTP 上传
#==============================================
ftp -n<<!
open $ftpserver $ftpport
user $ftpuser $ftppassword
pass
binary
lcd $datapath
prompt
mput ${table}${backtime}.tar.bz2 ${table}${backtime}.tar.bz2
mput ${table}web${backtime}.tar.bz2 ${table}web${backtime}.tar.bz2
mdelete ${table}${deldate}.tar.bz2
mdelete ${table}web${deldate}.tar.bz2
close
bye !
请根据实际情况修改配置参数
步骤二:给文件添加执行权限
chmod +x ftp_backup.sh
步骤三:添加 crontab 每日定时运行
crontab 的使用方法可以看:
http://www.91yun.org/archives/112
* * */1 * * /root/ftp_backup.sh
91云(91yun.co)
你好,我按照您的方法一步步缺这样报错 不知道是什么原因。环境是Centos7.8
./ftp_backup.sh: line 44: mysqldump: command not found
./ftp_backup.sh: line 74: warning: here-document at line 62 delimited by end-of-file (wanted `!’)
./ftp_backup.sh: line 62: ftp: command not found
mysqldump和ftp命令都没装
不知道哪里有问题。FTP配置内容应该是没错的。
tar: 从成员名中删除开头的“/”
ftp: connect: 连接超时
Not connected.
Passive mode off.
Not connected.
Local directory now /home/bak/xieyang
Interactive mode off.
Not connected.
Not connected.
Not connected.
Not connected.
Not connected.
是ftp连接超时?你手动打下ftp那段代码。一步步。看哪步有问题。