原文: http://www.codeceo.com/article/linux-file-permission.html 在 Linux 中最基本的任务之一就是设置文件权限。理解它们是如何实现的是你进入 Linux 世界的第一步。如您所料,这一基本操作在类 UNIX…
Linux: Shell脚本备份MySQL数据库, Linux shell script for database backup
Shell脚本是我们写不同类型命令的一种脚本,这些命令在这一个文件中就可以执行。我们也可以逐一敲入命令手动执行。如果我们要使用shell脚本就必须在一开始把这些命令写到一个文本文件中,以后就可以随意反复运行这些命令了。
我首先要在本文带给你的是完整脚本。后面会对该脚本做说明。我假定你已经知道shell scripting、 mysqldump和crontab。
适用操作系统:任何Linux或UNIX。
主脚本(用于备份mysql数据库):
该Shell脚本可以自动备份数据库。只要复制粘贴本脚本到文本编辑器中,输入数据库用户名、密码以及数据库名即可。我备份数据库使用的是mysqlump 命令。后面会对每行脚本命令进行说明。
1. 分别建立目录“backups”和“history”
mkdir -p /var/www/html/var/backups/history
2. 现在使用你喜欢的编辑软件创建并编辑“backup.sh”
这里我用的是 vi
vi /var/www/html/var/backups/backup.sh
现在把以下几行命令输入到 backup.sh 文件中:
#!bin/bash BACKUP=/var/www/html/var/backups USERNAME=root PASSWORD='root' DBNAME=ikeepstudying cd ${BACKUP} echo "----You are In Backup Directory" sudo mv *.sql ${BACKUP}/history/ sudo rm -rf *.sql echo "----Old Databases are Moved to history folder" Now=$(date +"%Y-%m-%d--%H:%M:%S") File=backup-$Now.sql mysqldump --user=${USERNAME} --password=${PASSWORD} --default-character-set=utf8 --single-transaction ${DBNAME} > $File echo "----Your Database Backup Successfully Completed"
脚本说明:
切记,在第8行命令中,在mysqldump命令后要输入自己的数据库用户名、密码及数据库名。
执行该脚本,首先会进入 /var/www/html/var/backups 目录,然后该脚本会把原有的旧数据库备份移动到 /history 文件夹中,接着根据系统的日期及时间生成一个文件名,在最后 mysqldump 命令会生成一个“.sql”格式的数据库备份文件。
3. 设置 backup.sh 脚本文件的可执行许可
chmod +x /var/www/html/var/backups/backup.sh
4. 执行脚本
其他版本:
First create a script file and give this file executable permission.
# cd /etc/cron.daily/ # touch /etc/cron.daily/dbbackup-daily.sh # chmod 755 /etc/cron.daily/dbbackup-daily.sh # vi /etc/cron.daily/dbbackup-daily.sh
Then copy following lines into file with Shift+Ins
#!/bin/sh now="$(date +'%d_%m_%Y_%H_%M_%S')" filename="db_backup_$now".gz backupfolder="/var/www/vhosts/example.com/httpdocs/backups" fullpathbackupfile="$backupfolder/$filename" logfile="$backupfolder/"backup_log_"$(date +'%Y_%m')".txt echo "mysqldump started at $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile" mysqldump --user=mydbuser --password=mypass --default-character-set=utf8 mydatabase | gzip > "$fullpathbackupfile" echo "mysqldump finished at $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile" chown myuser "$fullpathbackupfile" chown myuser "$logfile" echo "file permission changed" >> "$logfile" find "$backupfolder" -name db_backup_* -mtime +8 -exec rm {} \; echo "old files deleted" >> "$logfile" echo "operation finished at $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile" echo "*****************" >> "$logfile" exit 0
参看:https://stackoverflow.com/a/19682065
本文:Linux: Shell脚本备份MySQL数据库, Linux shell script for database backup