出于安全考虑,服务器需要定期进行备份,对于 Linux 我们可以直接使用 sh 脚本备份
简单的文件备份脚本
(本例将/website
备份到/backup/
下,名称为当天的年月日.tar.gz,并删除 30 天以前的备份)
#!/bin/sh nowDate=`date +%Y%m%d` backupDir=/backup/ dbDir=/website logFile=/var/log/backup.log oldBackupFile=$backupDir`date -d '-30 days' +%Y%m%d`.tar.gz backupFile=${backupDir}${nowDate}.tar.gz echo "--------------------------------------" >> $logFile echo $(date +"%y-%m-%d %H:%M:%S") >> $logFile rm -f $oldBackupFile >> $logFile 2>&1 echo "delete old backup file $oldBackupFile">> $logFile tar zcpf $backupFile $dbDir >> $logFile 2>&1 echo "backup dir $dbDir as new file $backupFile" >> $logFile
简单的 Mysql 备份脚本
(本例将 database123
数据库备份到/backup/database123/
下,名称为当天的年月日.tar.gz,并删除 30 天以前的备份)
#!/bin/sh nowDate=`date +%Y%m%d` backupDir=/backup/database123/ Tempdata=/backup/tmp/ logFile=/var/log/sql-backup.log mysqluser='username' mysqlpasswd='123456789' mysqldb='database123' oldBackupFile=$backupDir`date -d '-30 days' +%Y%m%d`.tar.gz backupFile=${backupDir}${nowDate}_sql.tar.gz echo "--------------------------------------" >> $logFile echo $(date +"%y-%m-%d %H:%M:%S") >> $logFile mkdir $Tempdata >> $logFile 2>&1 rm -f $oldBackupFile >> $logFile 2>&1 echo "delete old backup file $oldBackupFile">> $logFile mysqldump -u ${mysqluser} -p${mysqlpasswd} ${mysqldb} > $Tempdata${mysqldb}.sql tar zcpf $backupFile ${Tempdata}${mysqldb}.sql >> $logFile 2>&1 rm -f ${Tempdata}${mysqldb}.sql >> $logFile 2>&1 rmdir $Tempdata >> $logFile 2>&1 echo "backup database $mysqldb as new file $backupFile" >> $logFile
简单说明,第一句的 #!/bin/sh
是必不可少的
通常第一句的声明使用两种,#!/bin/sh
与 #!/bin/bash
前者代表了使用 sh 命令,后者使用 bash 命令
主要区别在于 sh 命令遇到执行失败则全部停止,bash 命令无视错误则继续执行
而后,例如 nowDate=date +%Y%m%d
的命令,都是将等号右侧的值赋予左侧,调用时使用 $nowDate
调用,如果需要在后面添加字符,则使用 ${nowDate}
将其区分开来