我try 了很多数据库备份脚本,但都做不到.我想每小时备份一次数据库

如果你能为这次行动写一个脚本,告诉我应该做些什么,我会很高兴的?

  • 获取当前日期并创建一个变量date=date(d_m_y_H_M_S)
  • 为文件名创建一个变量filename="$date".gz
  • 像这样转储我的数据库
  • 删除文件夹/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".因为我想从"我的用户"FTP帐户打开备份和日志(log)文件.
  • 我不想在每个老朋友之后都收到邮箱.将添加>/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

编辑:

mysqldump --user=mydbuser --password=mypass --default-character-set=utf8
          --single-transaction mydatabase | gzip > "$fullpathbackupfile"

Linux相关问答推荐

Linux打开/dev/tran/n是否与复制相同?

Linux和Windows x86程序集调用约定

如何判断程序是在终端上运行还是在后台运行?

线程创建会在 Linux 中触发页面错误吗?它与软脏 PTE 有什么关系?

如何在不进行轮询且不吃掉其他人子进程的退出代码的情况下等待一组子进程(并且只有它们)?

所有进程的Linux环境变量

如何使用awk或其他方法提取双引号中的子字符串?

另一个远程的 Git 合并分支

是否可以使用 shell 脚本递归地创建文件夹?

如何使用不同的出口 IP 一次运行多个 Tor 进程?

无法覆盖符号链接 RedHat Linux

在 Linux/POSIX 系统上获取用户全名的最简单方法是什么?

如何在 Linux 中命名线程?

crontab 命令单独一行

用于数据库备份的 Linux shell 脚本

Windows 开发环境值得付出代价吗?

如何在 IE 中使用 Linux 进行测试

具有所有内核的 Gzip

如何拖尾除第一行以外的所有行

未找到版本CXXABI_1.3.8(...要求)