请选择 进入手机版 | 继续访问电脑版

使用shell 定时备份网站数据 [复制链接]

620
 
0x01 前言服务器无论大小,数据都是异常重要和珍贵的。定时备份是一个好习惯,我也为我每个客户和我自己的每一台服务器都使用上shell 脚本进行定时备份,下面我来解释下我的小脚本。0x02 定义变量#sql 服务器地址,请根据实际情况进行修改sql_host_addr=127.0.0.1 #数据库用户名,请根据需要进行修改mysql_username=root #数据库密码,请根据需要进行修改mysql_passwd=mysql_password #ftp 服务器域名或ip,请根据需要进行修改ftp_addr=foo.com or 222.222.222.222 #ftp 用户名,请根据需要进行修改ftp_username=your_ftp_username #ftp密码,请根据需要进行修改ftp_passwd=your_ftp_password #ftp 目录路径,请根据需要进行修改ftp_folder=/ #网站数据目录,请根据需要进行修改web_file_folder=/usr/local/html #zip 文件的压缩密码,请根据需要进行修改zip_passwd=your_zip_passwd #zip 文件名,请勿更改!!!!backup_file_name=$(date +%Y%m%d).zip #备份文件存放位置,请根据需要进行修改backup_file_addr=/usr/local/backup0x03 新建与删除新建当天的备份文件夹,文件夹以当天的日期命名。删除3天前的数据,仅保留昨天和前天的。#新建文件夹,我的备份文件存放在$backup_file_addr 目录中,请根据需要自行更改mkdir -p $backup_file_addr/$(date +%Y%m%d)/mysql_dump #删除本地3天前的数据rm -rf $backup_file_addr/$(date -d -3day +"%Y%m%d").zip0x04 备份数据库数据库是这个脚本里最复杂的地方了,首先进入当天的备份文件夹的mysql_dump 目录,通过SHOW DATABASES 获得所有库名称,再通过for 历遍使用mysqldump 导出所有数据库。每导出一个数据库即将其通过 | 管道传递给gzip 压缩。#进入mysql_dump 文件夹cd $backup_file_addr/$(date +%Y%m%d)/mysql_dump #导出数据库,通过历遍数据库,将各个数据库分别压缩##-B 不使用历史文件,禁止交互动作##-N 不输出列名称,因为列名称不是一个数据库##-e 执行命令并退出##将mysql 输出的内容通过管道 | 传递给xargs ,xargs 将所有换行替换为空格,以便历遍##通过mysqldump 对xargs 修改过后的数据库进行dump 并使用gzip 压缩for db in `/usr/bin/mysql -h 127.0.0.1 -u$mysql_username -p$mysql_passwd -B -N -e 'SHOW DATABASES' | xargs`; do    (/usr/bin/mysqldump -u$mysql_username -p$mysql_passwd ${db} | gzip -9 - > ${db}.sql.gz)done #进入文件夹$backup_file_addr/$(date +%Y%m%d)cd ..0x05 复制网站数据#将网站数据复制到$backup_file_addr/$(date +%Y%m%d)/web_filecp -r $web_file_folder ./web_file #进入文件夹$backup_file_addr/$(date +%Y%m%d)cd ..0x06 压缩#使用zip 压缩文件夹zip -r -9 -P $zip_passwd $backup_file_addr/$backup_file_name $(date +%Y%m%d) #删除临时文件夹,仅保留压缩文件rm -rf $(date +%Y%m%d)0x07 上传到备份空间我这里使用了lftp ,请通过以下命令安装:
yum install lftp -y推荐备份到百度云,关于bypy 的教程请通过以下链接查看: 利用百度盘定时备份网站数据#上传到FTP空间lftp -u $ftp_username,$ftp_passwd $ftp_addr << ENDput $backup_file_namebyeEND #或上传到百度盘/usr/bin/python /usr/local/shell/bypy/bypy.py syncup $backup_file_addr/ test_addr/0x10 定时任务将脚本通过crontab 定时执行:#每天3点30分定时以root 身份执行backup.sh30 3 * * * root /usr/local/shell/backup.sh0x09 结语如果你的数据库服务器包含有重要数据或者数据量特别巨大,上面的方法可能不适用于你。但上面的方法对我们这种小站点确实有帮助,我这服务器上运行着不止一个网站,但网站都是我的。即时如此,也不应该对数据的安全性掉以轻心。 完整的shell 脚本请点击下面链接到Github 浏览: web_site_backup.sh 文章转自:TerenceProject 原文链接:https://enginx.cn/2016/06/22/%E4 ... 95%B0%E6%8D%AE.html  




620
举报
0个关于 使用shell 定时备份网站数据 的回复

本版积分规则

发表主题 回复

加入我们

(c) 2010-2018 怪兽工厂 gsmonsters All Rights Reserved

ICP备案证书号: 津ICP备16000525号