我尝试了很多数据库备份脚本,但我无法成功。我想每小时备份一次数据库。
我将文件添加到“/etc/cron.hourly/”文件夹,将其 chmod 更改为 755,但它没有运行。
至少我写了我的伪代码。
如果您能为该操作编写一个脚本并告诉我我还应该做什么,我会很高兴?
添加此脚本文件后/etc/cron.hourly/
folder.
- 获取当前日期并创建一个变量,
date=date(d_m_y_H_M_S)
- 创建一个变量作为文件名,
filename="$date".gz
- 像这样获取我的数据库转储
mysqldump --user=my_user --password=my_pass --default-character-set=utf8 my_database | gzip > "/var/www/vhosts/system/example.com/httpdocs/backups/$("filename")
- 删除文件夹内所有文件
/var/www/vhosts/system/example.com/httpdocs/backups/
超过 8 天的
- 到文件
"/var/www/vhosts/system/example.com/httpdocs/backup_log.txt"
,这段文字将被写成:Backup is created at $("date")
- 将文件所有者 (chown) 从 root 更改为“my_user”。因为我想从“my_user”FTP帐户打开备份和日志文件。
- 我不想在每个 cron 之后收到电子邮件。
>/dev/null 2>&1
将被添加。
经过几个小时的工作,我创建了如下所示的解决方案。我为其他可以受益的人复制粘贴。
首先创建一个脚本文件,并赋予该文件可执行权限。
# 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
然后使用 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
Edit:
如果你使用InnoDB并且备份花费太多时间,你可以添加“单笔交易 http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html#option_mysqldump_single-transaction" 防止锁定的参数。因此 mysqldump 行将如下所示:
mysqldump --user=mydbuser --password=mypass --default-character-set=utf8
--single-transaction mydatabase | gzip > "$fullpathbackupfile"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)