VPS侦探论坛

 找回密码
 注册
查看: 6701|回复: 6

LNMP 1.2一键包下的backup.sh备份功能如何使用?

[复制链接]
发表于 2016-2-22 11:03:23 | 显示全部楼层 |阅读模式

lnmp一键包第一次使用,刚装上正在研究,不甚熟悉。/lnmp1.2-full/tools/下有个backup.sh备份脚本,看代码是可以用来备份数据库和网站目录的。我有三个问题想咨询下坛主:
1、如何手动运行backup.sh备份功能?
在运行bash backup.sh后报错,backup.sh放在/root/下:
  1. [root@AY1211101 ~]# bash backup.sh
  2. : command not found
  3. : command not found
  4. : command not found
  5. : command not found
  6. : command not found
  7. : command not found
  8. : command not found
  9. : command not found
  10. : command not found
  11. 'ackup.sh: line 37: syntax error near unexpected token `
  12. 'ackup.sh: line 37: `Backup_Dir()
复制代码

2、如何将backup.sh添加到crontab中定时自动运行备份?
3、如何只备份数据库并用FTP上传备份?
网站目录备份对我来说不需要用到,是否可以直接注释掉带"WWWBackup"、"Backup_Dir"、"Backup_Home"特征的部分代码来去掉网站目录备份?

请坛主指教,感谢坛主的无私奉献!

我的backup.sh文件内容如下,里面的mysql名和password实际使用是正确的,以下做了示例隐藏处理:
  1. #!/bin/bash

  2. #Funciont: Backup website and mysql database
  3. #Author: licess
  4. #Website: http://lnmp.org

  5. #IMPORTANT!!!Please Setting the following Values!

  6. Backup_Home="/home/backup/"
  7. MySQL_Dump="/usr/local/mysql/bin/mysqldump"
  8. ######~Set Directory you want to backup~######
  9. Backup_Dir=("/home/wwwroot/vpser.net" "/home/wwwroot/lnmp.org")

  10. ######~Set MySQL Database you want to backup~######
  11. Backup_Database=("db1" "db2")

  12. ######~Set MySQL UserName and password~######
  13. MYSQL_UserName='root'
  14. MYSQL_PassWord='1***1'

  15. ######~Enable Ftp Backup~######
  16. Enable_FTP=1
  17. # 0: enable; 1: disable
  18. ######~Set FTP Information~######
  19. FTP_Host='1.2.3.4'
  20. FTP_Username='vpser.net'
  21. FTP_Password='yourftppassword'
  22. FTP_Dir="backup"

  23. #Values Setting END!

  24. TodayWWWBackup=www-*-$(date +"%Y%m%d").tar.gz
  25. TodayDBBackup=db-*-$(date +"%Y%m%d").sql
  26. OldWWWBackup=www-*-$(date -d -3day +"%Y%m%d").tar.gz
  27. OldDBBackup=db-*-$(date -d -3day +"%Y%m%d").sql

  28. Backup_Dir()
  29. {
  30.     Backup_Path=$1
  31.     Dir_Name=`echo ${Backup_Path##*/}`
  32.     Pre_Dir=`echo ${Backup_Path}|sed 's/'${Dir_Name}'//g'`
  33.     tar zcf ${Backup_Home}www-${Dir_Name}-$(date +"%Y%m%d").tar.gz -C ${Pre_Dir} ${Dir_Name}
  34. }
  35. Backup_Sql()
  36. {
  37.     ${MySQL_Dump} -u$MYSQL_UserName -p$MYSQL_PassWord $1 > ${Backup_Home}db-$1-$(date +"%Y%m%d").sql
  38. }

  39. if [ ! -f ${MySQL_Dump} ]; then  
  40.     echo "mysqldump command not found.please check your setting."
  41.     exit 1
  42. fi

  43. if [ ! -d ${Backup_Home} ]; then  
  44.     mkdir -p ${Backup_Home}
  45. fi

  46. type lftp >/dev/null 2>&1 || { echo >&2 "lftp command not found. Install: centos:yum install lftp,debian/ubuntu:apt-get install lftp."; }

  47. echo "Backup website files..."
  48. for dd in ${Backup_Dir[@]};do
  49.     Backup_Dir ${dd}
  50. done

  51. echo "Backup Databases..."
  52. for db in ${Backup_Database[@]};do
  53.     Backup_Sql ${db}
  54. done

  55. echo "Delete old backup files..."
  56. rm -f ${Backup_Home}${OldWWWBackup}
  57. rm -f ${Backup_Home}${OldDBBackup}

  58. if [ ${Enable_FTP} = 0 ]; then
  59.     echo "Uploading backup files to ftp..."
  60.     cd ${Backup_Home}
  61.     lftp ${FTP_Host} -u ${FTP_Username},${FTP_Password} << EOF
  62. cd ${FTP_Dir}
  63. mrm ${OldWWWBackup}
  64. mrm ${OldDBBackup}
  65. mput ${TodayWWWBackup}
  66. mput ${TodayDBBackup}
  67. bye
  68. EOF

  69. echo "complete."
  70. fi
复制代码

[ 本帖最后由 半岛小生 于 2016-2-22 12:19 编辑 ]
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 2016-2-22 13:22:13 | 显示全部楼层


1 不要加bash之类的,直接chmod +x 文件名加上执行权限直接执行
另外你用什么编辑器编辑的

2 crontab教程自行去www.vpser.net网站上搜索

3不备份网站就删除Backup_Dir 那些
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
 楼主| 发表于 2016-2-22 13:38:42 | 显示全部楼层

回复 2# 的帖子


用加执行权限的方法会报如下错:
[root@AY12111011 ~]# chmod +x /root/backup.sh
[root@AY12111011 ~]# ./backup.sh
-bash: ./backup.sh: /bin/bash^M: bad interpreter: No such file or directory

我是在ssh secure file transfer里用dreamwave直接打开编辑并保存的。

感谢您的回复!
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 2016-2-22 16:30:49 | 显示全部楼层

回复 3# 的帖子




这个错误很明显是使用windows下的记事本之类的工具保存成dos文件格式造成的

vi /etc/init.d/nginx
输入:set fileformat=unix
输入:wq
再运行试试,vi教程 https://www.vpser.net/manage/vi.html

如果已安装dos2unix命令可以执行:dos2unix 文件名  来完成转换。

或使用notepad++编辑,编辑-》档案格式转换-》转为UNIX格式
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
 楼主| 发表于 2016-2-23 20:02:55 | 显示全部楼层

回复 4# 的帖子


坛主真是太强大了!果然是文件格式的问题,用notepad++转换格式并覆盖后就可以备份成功了。您写的脚本用来备份非常方便了。只是.sql文件未经压缩,稍大的数据库文件FTP上传备份会偏慢。请问如何才能将导出的数据库.sql文件像网站目录备份一样直接打包成.tar.gz压缩包存储?

军哥运维代购:http://shop63846532.taobao.com/

发表于 2016-2-24 12:53:20 | 显示全部楼层

回复 5# 的帖子


Backup_Sql语句里加上个 | gzip 就压缩成gz的了
${MySQL_Dump} -u$MYSQL_UserName -p$MYSQL_PassWord $1 | gzip > ${Backup_Home}db-$1-$(date +"%Y%m%d").sql.gz
 楼主| 发表于 2016-2-24 19:38:09 | 显示全部楼层

回复 6# 的帖子


万分感激军哥的帮助!
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|VPS侦探 ( 鲁ICP备16040043号-1 )

GMT+8, 2024-9-28 23:28 , Processed in 0.027462 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表