« 上一篇下一篇 »

代码分享--Linux服务器的每日自动备份脚本网站每日自动备份脚本代码

  想在Linux系统下实现自动备份,应该如何操作呢,下面文章来给你分享一下自动备份代码。本代码根据网上代码改编而成,这个脚本分为两个文件,一个是执行文件backup.sh,另一个是备份项目文件backup.txt。backup.txt这个文件比较好理解,就是一个text文件,它的每一行表示一个项目,也就是你需要备份的目录下面的文件或目录。

  首先用root和密码ssH登录到准备备份的Vps上,默认的目录为/root。

  第一步、安装emAiL发送组件,用如下命令:

  yuminstallsendmailmutt

  第二步、把每日自动备份脚本下载到Vps上的/root目录下,脚本下载地址:/shell/AutobackuptoFtp.sh ,

  用命令:

  wget/shell/AutobackuptoFtp.sh

  第三步、用Vi命令编辑上一步下载下来的自动备份脚本AutobackuptoFtp.sh,修改的位置如下:脚本代码如下(注意修改Ftp服务器地址用户名密码):

  #!/bin/bash#你要修改的地方从这里开始mYsQL_UseR=root#mysql用户名mYsQL_pAss=123456#mysql密码mAiL_to=admin@tmvps.cn#数据库发送到的邮箱Ftp_UseR=cat#ftp用户名Ftp_pAss=123456#ftp密码Ftp_ip=122.122.122.2#ftp地址Ftp_backup=backup#ftp上存放备份文件的目录,这个要自己得ftp上面建的web_dAtA=/home/www#要备份的网站数据#你要修改的地方从这里结束#定义数据库的名字和旧数据库的名字databakname=data_$(date+"%Y%m%d").tar.gzwebbakname=web_$(date+%Y%m%d).tar.gzolddata=data_$(date-d-5day+"%Y%m%d").tar.gzoldweb=web_$(date-d-5day+"%Y%m%d").tar.gz#删除本地3天前的数据rm-rf/home/backup/data_$(date-d-3day+"%Y%m%d").tar.gz/home/backup/web_$(date-d-3day+"%Y%m%d").tar.gzcd/home/backup#导出数据库,一个数据库一个压缩文件fordbin`/usr/local/mysql/bin/mysql-u$mYsQL_UseR-p$mYsQL_pAss-b-n-e'sHowdAtAbAses'|xargs`;do(/usr/local/mysql/bin/mysqldump-u$mYsQL_UseR-p$mYsQL_pAss${db}|gzip-9->${db}.sql.gz)done#压缩数据库文件为一个文件tarzcf/home/backup/$databakname/home/backup/*.sql.gzrm-rf/home/backup/*.sql.gz#发送数据库到email,如果数据库压缩后太大,请注释这行echo"主题:数据库备份"|mutt-a/home/backup/$databakname-s"内容:数据库备份"$mAiL_to#压缩网站数据tarzcf/home/backup/$webbakname$web_dAtA#上传到Ftp空间,删除Ftp空间5天前的数据ftp-v-n$Ftp_ip<

  给脚本添加执行权限:

  chmod+x/root/AutobackuptoFtp.sh

  利用系统crontab实现每天自动运行:

  crontab-e

  输入以下内容:

  0000***/root/AutobackuptoFtp.sh

  其中00 00为时间分/小时,可自行修改,例如:30 12 ***,就是每天12.30运行这个脚本。

  以下为lftp备份脚本:

  #!/bin/bash

  #定义数据库的名字和旧数据库的名字

  databakname=data_$(date +"%Y%m%d").tar.gz

  webbakname=web_$(date +%Y%m%d).tar.gz

  #删除本地3天前的数据

  rm -rf /home/backup/data_$(date -d -3day +"%Y%m%d").tar.gz /home/backup/web_$(date -d -3day +"%Y%m%d").tar.gz

  #导出mysql数据库

  /usr/local/mysql/bin/mysqldump -uroot -ppassword --databases db1 > /home/backup/databackup.sql

  #压缩数据库

  tar zcf /home/backup/$databakname /home/backup/databackup.sql

  rm -rf /home/backup/databackup.sql

  #压缩网站数据

  tar zcvf /home/backup/$webbakname /home/wwwroot

  #使用lftp同步备份目录

  lftp -u user,password -e "mirror -R --only-newer /home/backup /backup" ftp.yoursite.cn

 

二、创建定时任务

1)、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
2)、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。

crontab文件格式:

  *           *        *        *        *           command

minute   hour    day   month   week      command

分          时        天      月        星期      命令

例如:每周每月每天1点0分执行备份脚本,日志放在backup.log文件中

0 1 * * * /bin/sh /home/script/backup.sh >> /home/script/backup.log 2>&1

若测试脚本是否正常运行,可以手动执行测试

3)、查询当前用户定时任务。