自动定时加密备份网站数据并上传到FTP空间的shell脚本

林继 VPS 知识 2,267 共写了282个字 (2012-01-27 17:36:34) 没有评论 打印 扫描二维码 百度已收录
  1. #!/bin/bash
  2. #为backup.sh添加执行权限chmod +x /root/backup.sh
  3. #添加脚本至crontab(自动启动程序)执行命令crontab -e,添加每天0点10分启动代码
  4. #10 00 * * * /root/backup.sh
  5.  
  6. #===========配置区开始==============
  7. BACKUP_DATA_TEMP="/home/backup"
  8. DB_USR="数据库用户名"
  9. DB_PWD="数据库密码"
  10. FTP_HOST="FTP主机名"
  11. FTP_USR="FTP用户名"
  12. FTP_PWD="FTP密码"
  13. ZIP_PWD="压缩包密码"
  14.  
  15. #数据库文件位置
  16. DB_PATH="/home/mysql_data"
  17.  
  18. #网站数据文件位置
  19. WEB_PATH="/home/ftp/1520"
  20.  
  21. #其它要备份的文件夹
  22. OTHER_PATH="/home/lum_safe_files"
  23.  
  24. #按周清理,设为0则按天清理
  25. ROUND_WEEK="1"
  26. #===========配置区结束==============
  27.  
  28. FTP_FOLDER=$(date +"%Y-%m-%d")
  29. if [ ROUND_WEEK = 1 ];then
  30. OLD_FTP_FOLDER=$(date -d -3week +"%Y-%m-%d")
  31. else
  32. OLD_FTP_FOLDER=$(date -d -3day +"%Y-%m-%d")
  33. fi
  34.  
  35. #在FTP空间里新建目录
  36. ftp -v -n $FTP_HOST <<END
  37. user $FTP_USR $FTP_PWD
  38. type binary
  39. prompt off
  40. cd public_html
  41. mkdir $FTP_FOLDER
  42. ls . temp_ftpdir.txt
  43. bye
  44. END
  45.  
  46. mkdir $BACKUP_DATA_TEMP
  47. cd $BACKUP_DATA_TEMP
  48.  
  49. #========压缩其它文件========
  50. zip -9 -q -r -P $ZIP_PWD $BACKUP_DATA_TEMP/lum_safe_files.zip $OTHER_PATH/
  51. #上传到FTP空间
  52. ftp -v -n $FTP_HOST <<END
  53. user $FTP_USR $FTP_PWD
  54. type binary
  55. cd public_html
  56. cd $FTP_FOLDER
  57. put lum_safe_files.zip
  58. bye
  59. END
  60. rm -rf $BACKUP_DATA_TEMP/lum_safe_files.zip
  61.  
  62. #===========导出mysql数据库===========
  63. DBLIST=`ls -p $DB_PATH | grep / | tr -d /`
  64. for dbname in $DBLIST
  65. do
  66. #mysqldump -u $DB_USR -p$DB_PWD $dbname > $BACKUP_DATA_TEMP/$dbname.sql
  67. mysqlhotcopy $dbname -u $DB_USR -p $DB_PWD $BACKUP_DATA_TEMP | logger -t mysqlhotcopy 
  68. #压缩数据库
  69. zip -9 -q -r -P $ZIP_PWD $BACKUP_DATA_TEMP/$dbname.mysql.zip $BACKUP_DATA_TEMP/$dbname/
  70. #删除sql文件
  71. rm -rf $BACKUP_DATA_TEMP/$dbname/
  72. #上传到FTP空间
  73. ftp -v -n $FTP_HOST <<END
  74. user $FTP_USR $FTP_PWD
  75. type binary
  76. cd public_html
  77. cd $FTP_FOLDER
  78. put $dbname.mysql.zip
  79. bye
  80. END
  81. rm -rf $BACKUP_DATA_TEMP/$dbname.mysql.zip
  82. done
  83.  
  84. #==========压缩网站数据=============
  85. DBLIST=`ls -p $WEB_PATH | grep / | tr -d /`
  86. for dbname in $DBLIST
  87. do
  88. zip -9 -q -r -P $ZIP_PWD $BACKUP_DATA_TEMP/$dbname.page.zip $WEB_PATH/$dbname
  89. #上传到FTP空间
  90. ftp -v -n $FTP_HOST <<END
  91. user $FTP_USR $FTP_PWD
  92. type binary
  93. cd public_html
  94. cd $FTP_FOLDER
  95. put $dbname.page.zip
  96. bye
  97. END
  98. rm -rf $BACKUP_DATA_TEMP/$dbname.page.zip
  99. done
  100.  
  101. if [ -f "temp_ftpdir.txt" ] && [ `cat temp_ftpdir.txt | awk '{print $9}' | grep $OLD_FTP_FOLDER | wc -l` -ge 1 ];then
  102. #删除FTP空间5天前的数据 
  103. ftp -v -n $FTP_HOST <<END
  104. user $FTP_USR $FTP_PWD
  105. type binary
  106. cd public_html
  107. cd $OLD_FTP_FOLDER
  108. prompt off
  109. mdelete *.*
  110. cd ../
  111. rmdir $OLD_FTP_FOLDER
  112. bye
  113. END
  114. rm -rf temp_ftpdir.txt
  115. fi

#删除本地的备份数据
rm -rf $BACKUP_DATA_TEMP/

然后使用命令:

vi /usr/local/LuNamp/cmd/crontab_cmd.sh
在crontab_cmd.sh文件中添加一行,内容为:

10 00 * * * /root/backup.sh

必须要修改/usr/local/LuNamp/cmd/crontab_cmd.sh这个文件,因为LuManager会在系统重启后,把crontab中的内容用/usr/local/LuNamp/cmd/crontab_cmd.sh文件中的内容进行替换。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

< >