使用 cron 自动备份我的数据库和文件

使用 cron 自动备份我的数据库和文件

我想使用 cron 自动备份我的数据库和文件。我是否应该将以下几行添加到 crontab 中?

mysqldump -u root -pPASSWORD database_name | gzip > /home/backup/database_`date +\%m-\%d-\%Y`.sql.gz

svn commit -m "Committing the working copy containing the database dump"
  1. 首先,这是一个好方法吗?

  2. 不清楚如何用svn指定仓库和工作副本?

  3. 如何仅在 mysqldump 完成时而不是之前运行 svn?避免冲突

答案1

1) 如果你坚持在 subversion 中存储备份,那么这种方法没有什么问题。但是,这很奇怪。

2)您应该保留一个结帐记录,将转储放入工作目录,然后在提交之前根据需要svn update运行。svn add

3) 如果您运行 shell 脚本中所示的命令,则应该没有重叠。

答案2

还要注意,压缩 mysql 输出将创建截然不同的二进制文件,并导致存储库磁盘需求膨胀。未压缩的 sql 可能需要更多的初始空间,但文本差异将更有效地存储在存储库中。此外,没有必要将每个文本差异存储为名称中包含日期的单独文件。最好是同一个文件,因为版本控制将允许您回溯时间。

我更喜欢使用诸如最近 7 天的压缩 SQL 之类的滚动备份,然后每隔一周快照一次,直到一个月或两个月。我认为没有必要永远对数据库进行版本控制。

答案3

正如我所说,将数据库保存在 SVN 存储库中不是一个好的做法。

关于 mysqldump,请记住,通过这种方式您还包括了这些选项(--opt 是默认值,是下面的简写):

--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset

因此,如果您使用创建的完整转储,您将覆盖上次执行备份后插入的所有数据。

直到您的数据库像您所说的那样小,我建议您更频繁地进行备份。

是一个很好的例子,告诉你如何继续。

答案4

如何使用 automysqlbackup 自动转储备份,然后使用 BackupPC 创建自动管理的完整/差异?

BackupPC 在不同备份中未更改的文件之间建立硬链接,以最大限度地减少磁盘空间使用。

http://sourceforge.net/projects/automysqlbackup/

http://backuppc.sourceforge.net/

相关内容