use*_*394 19 command-line shell backup diff
在工作中,我们每晚都会转储我们的 mysql 数据库。每天,我都会猜测接近 90-95% 的数据是重复的,并且随着时间的推移而增加。(哎呀,在这一点上,有些可能是 99%)
这些转储是一行是单个 mysql INSERT 语句的地方,因此唯一的区别是整行以及它们在文件中的顺序。如果我对它们进行排序,文件与文件之间的实际差异将非常小。
我一直在寻找,但我还没有找到任何方法来对转储输出进行排序。不过,我可以通过sort
命令进行管道传输。然后会有很长很长的相同行块。
所以我试图找到一种只存储差异的方法。我可以从一个主转储开始,然后每天晚上进行比较。但是每晚差异都会更大。或者,我可以制作滚动差异,单个差异非常小,但如果我必须每晚将整个系列的主要差异放在一起,计算时间似乎会越来越长。
这可行吗?用什么工具?
编辑我不是问如何做 mysql 备份。暂时忘记mysql。这是一条红鲱鱼。我想知道的是如何从一系列文件中制作一系列滚动差异。每天晚上我们都会得到一个文件(恰好是一个 mysqldump 文件),它与之前的文件有 99% 的相似度。是的,我们对它们全部进行 gzip。但是首先拥有所有这些冗余是多余的。我真正需要的是与前一天晚上的差异……与前一天晚上的差异仅 1%……等等。所以我所追求的是如何制作一系列差异,所以我每晚只需要存储那 1%。
Gil*_*il' 14
两个可以存储二进制差异的备份工具是rdiff-backup和duplicity。两者都基于librsync
,但在此之上它们的行为完全不同。Rdiff-backup 存储最新的 copy 和 reverse diff,而 duplicity 存储传统的增量 diff。这两种工具还提供一组不同的外围功能。
小智 13
最近我一直在尝试在 git 中存储数据库转储。如果您的数据库转储非常大,这可能会变得不切实际,但它适用于小型数据库(Wordpress 站点等)。
我的备份脚本大致是:
cd /where/I/keep/backups && \
mysqldump > backup.sql && \
git commit -q -m "db dump `date '+%F-%T'`" backup.sql
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
883 次 |
最近记录: |