用脚本实现服务器数据的自动备份

数据管理

做一名好的服务器运维,必然要未雨绸缪,定期做好备份服务器数据的备份。备份工作属于重复性工作,在Linux上完全可以写个SHELL脚本完成备份工作的批处理,如果需要定期自动备份,还可以利用系统的计划任务来自动执行,实现完全无人工干预的自动备份,自动上传备份文件。

为了便于管理和传输,备份文件需要打包压缩,二者是通过SHELL脚本完成。因为批处理的SHELL脚本是自动备份的关键,这里小卓以实例着重说明。

一、文件夹打包压缩

可以直接使用tar命令加压缩参数,如:

  1. tar czf to-be-tar-and-zip-folder target.tgz
  2. 或者用bzip2
  3.   tar cjf to-be-tar-and-zip-folder target.tar.bz2

也可以使用管道,加tar打包的内容作为压缩命令的参数:

  1. tar cf – to-be-tar-and-zip-folder | gzip > target.tgz
  2. 或者用bzip2
  3. tar cf- to-be-tar-and-zip-filter |bzip2 -z > target.tar.bz2

二、mysqldump直接生成压缩包

mysqldump生成的是.sql为后缀名的数据库文件,生成后在压缩的话,会产生中间文件。如果不希望生成中间文件,直接导出mysql数据库后生成压缩文件,可以借助管道完成:

  1. mysqldump –opt –single-transaction -h HOST -u USER -pPASS -c –default-character-set=utf8 DATABASENAME| gzip > OUTPUT.sql.gz
  2. 或者用bzip2
  3. mysqldump –opt –single-transaction -h HOST -u USER -pPASS -c –default-character-set=utf8 DATABASENAME| bzip2 -z> OUTPUT.sql.bz2

上面的命令使用了“–single-transaction”来避免导出文件时需要锁死表格的限制,这样比用“–lock-tables=false”更高效。

三、给生成的备份文件加上时间戳

首先需要获取当前系统时间,存在变量里:

  1. NOW=“$(date +”%Y-%m-%d“)”

命令里需要使用时间戳时,直接用$NOW就可以了。所以结合上面的打包压缩文件和mysqldump生成压缩包,在SHELL命令环境里就是这样:

  1. NOW=“$(date +”%Y-%m-%d“)”
  2. tar cf – to-be-tar-and-zip-folder | gzip > target_$NOW.tar.gz)
  3. mysqldump –opt –single-transaction -h HOST -u USER -pPASS -c –default-character-set=utf8 DATABASENAME| gzip > OUTPUT_$NOW.sql.gz

好了,实现服务器数据自动备份所需的SHELL脚本方面的内容就介绍到这儿,如果需要用系统的计划任务,请参考小卓之前介绍过文章《LINUX下的计划任务CRONTAB》,结合相关内容实现定期自动备份

>>原创文章,欢迎转载。转载请注明:转载自惠州市卓优互联科技有限公司,谢谢!
>>原文链接地址:用脚本实现服务器数据的自动备份


关于作者

留下您的回复