其实服务器备份最好用的是 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
你好,我按照您的方法一步步缺这样报错 不知道是什么原因。环境是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那段代码。一步步。看哪步有问题。