LNMP 1.2一键包下的backup.sh备份功能如何使用?
lnmp一键包第一次使用,刚装上正在研究,不甚熟悉。/lnmp1.2-full/tools/下有个backup.sh备份脚本,看代码是可以用来备份数据库和网站目录的。我有三个问题想咨询下坛主:1、如何手动运行backup.sh备份功能?
在运行bash backup.sh后报错,backup.sh放在/root/下:
# bash backup.sh
: command not found
: command not found
: command not found
: command not found
: command not found
: command not found
: command not found
: command not found
: command not found
'ackup.sh: line 37: syntax error near unexpected token `
'ackup.sh: line 37: `Backup_Dir()
2、如何将backup.sh添加到crontab中定时自动运行备份?
3、如何只备份数据库并用FTP上传备份?
网站目录备份对我来说不需要用到,是否可以直接注释掉带"WWWBackup"、"Backup_Dir"、"Backup_Home"特征的部分代码来去掉网站目录备份?
请坛主指教,感谢坛主的无私奉献!
我的backup.sh文件内容如下,里面的mysql名和password实际使用是正确的,以下做了示例隐藏处理:
#!/bin/bash
#Funciont: Backup website and mysql database
#Author: licess
#Website: http://lnmp.org
#IMPORTANT!!!Please Setting the following Values!
Backup_Home="/home/backup/"
MySQL_Dump="/usr/local/mysql/bin/mysqldump"
######~Set Directory you want to backup~######
Backup_Dir=("/home/wwwroot/vpser.net" "/home/wwwroot/lnmp.org")
######~Set MySQL Database you want to backup~######
Backup_Database=("db1" "db2")
######~Set MySQL UserName and password~######
MYSQL_UserName='root'
MYSQL_PassWord='1***1'
######~Enable Ftp Backup~######
Enable_FTP=1
# 0: enable; 1: disable
######~Set FTP Information~######
FTP_Host='1.2.3.4'
FTP_Username='vpser.net'
FTP_Password='yourftppassword'
FTP_Dir="backup"
#Values Setting END!
TodayWWWBackup=www-*-$(date +"%Y%m%d").tar.gz
TodayDBBackup=db-*-$(date +"%Y%m%d").sql
OldWWWBackup=www-*-$(date -d -3day +"%Y%m%d").tar.gz
OldDBBackup=db-*-$(date -d -3day +"%Y%m%d").sql
Backup_Dir()
{
Backup_Path=$1
Dir_Name=`echo ${Backup_Path##*/}`
Pre_Dir=`echo ${Backup_Path}|sed 's/'${Dir_Name}'//g'`
tar zcf ${Backup_Home}www-${Dir_Name}-$(date +"%Y%m%d").tar.gz -C ${Pre_Dir} ${Dir_Name}
}
Backup_Sql()
{
${MySQL_Dump} -u$MYSQL_UserName -p$MYSQL_PassWord $1 > ${Backup_Home}db-$1-$(date +"%Y%m%d").sql
}
if [ ! -f ${MySQL_Dump} ]; then
echo "mysqldump command not found.please check your setting."
exit 1
fi
if [ ! -d ${Backup_Home} ]; then
mkdir -p ${Backup_Home}
fi
type lftp >/dev/null 2>&1 || { echo >&2 "lftp command not found. Install: centos:yum install lftp,debian/ubuntu:apt-get install lftp."; }
echo "Backup website files..."
for dd in ${Backup_Dir[@]};do
Backup_Dir ${dd}
done
echo "Backup Databases..."
for db in ${Backup_Database[@]};do
Backup_Sql ${db}
done
echo "Delete old backup files..."
rm -f ${Backup_Home}${OldWWWBackup}
rm -f ${Backup_Home}${OldDBBackup}
if [ ${Enable_FTP} = 0 ]; then
echo "Uploading backup files to ftp..."
cd ${Backup_Home}
lftp ${FTP_Host} -u ${FTP_Username},${FTP_Password} << EOF
cd ${FTP_Dir}
mrm ${OldWWWBackup}
mrm ${OldDBBackup}
mput ${TodayWWWBackup}
mput ${TodayDBBackup}
bye
EOF
echo "complete."
fi
[ 本帖最后由 半岛小生 于 2016-2-22 12:19 编辑 ] 1 不要加bash之类的,直接chmod +x 文件名加上执行权限直接执行
另外你用什么编辑器编辑的
2 crontab教程自行去www.vpser.net网站上搜索
3不备份网站就删除Backup_Dir 那些
回复 2# 的帖子
用加执行权限的方法会报如下错:# chmod +x /root/backup.sh
# ./backup.sh
-bash: ./backup.sh: /bin/bash^M: bad interpreter: No such file or directory
我是在ssh secure file transfer里用dreamwave直接打开编辑并保存的。
感谢您的回复!
回复 3# 的帖子
这个错误很明显是使用windows下的记事本之类的工具保存成dos文件格式造成的vi /etc/init.d/nginx
输入:set fileformat=unix
输入:wq
再运行试试,vi教程 https://www.vpser.net/manage/vi.html
如果已安装dos2unix命令可以执行:dos2unix 文件名来完成转换。
或使用notepad++编辑,编辑-》档案格式转换-》转为UNIX格式
回复 4# 的帖子
坛主真是太强大了!果然是文件格式的问题,用notepad++转换格式并覆盖后就可以备份成功了。您写的脚本用来备份非常方便了。只是.sql文件未经压缩,稍大的数据库文件FTP上传备份会偏慢。请问如何才能将导出的数据库.sql文件像网站目录备份一样直接打包成.tar.gz压缩包存储?回复 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
回复 6# 的帖子
万分感激军哥的帮助!
页:
[1]