问题标签 [backup-strategies]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1075 浏览

python - rdiff python 模块

是否有一个 python 模块具有计算 rdiff 签名和增量差异的功能?

我需要在跨平台应用程序上执行这些操作,所以我需要一些可以捆绑到 py2exe、py2app 等中的东西。

我已经做了很多搜索,但我似乎无法得到任何工作。Pysync、rdiff-backup、librsync 都出现了,但我无法在 python 中得到任何工作。

0 投票
1 回答
46 浏览

directory - 如何创建更新 2 周的 tar

我需要设置一个 bash 脚本来压缩和压缩目录。tar 应在该点之后的每一天使用相同的目录进行更新。这应该持续 14 天,直到最终删除 tar 并重新启动该过程。

我可以用手来设置。非常感谢

0 投票
1 回答
306 浏览

mysql - 冷备份期间网站数据库写入的最佳实践?

假设您有一个大型、流行的数据库驱动网站。网站上整天整夜都有人。他们访问既可以读取也可以写入数据库的页面。

在实施每日数据库备份计划时,它涉及进行冷备份,这意味着您在备份进行时临时关闭数据库或锁定表。这可确保在进行备份时不会将新数据插入数据库。

有哪些好的方法可以对站点控制器和模型进行编码,以免它们因表锁或数据库脱机而失败?您是否需要实现某种数据库写入队列系统或类似的东西?或者只是让整个网站暂时下线?或者只是在不锁定或关闭任何东西的情况下进行实时备份?什么是好方法?

0 投票
2 回答
1123 浏览

backup - 数据块的高效增量备份

我正在开发一个备份工具,但我想不出最有效的远程备份方法。我不想每次有小的变化时都发送整个文件,所以我猜增量备份是解决方案。这一切都很好,但现在我遇到了一个问题,即如何将一个文件分成多个部分。

问题是,假设我有一个简单的文本文件,一大块是一行:

现在我有 4 块。如果我将第二行更新为“第二行”,现在我只需要备份第二个块。

但是如果发生这样的事情怎么办:

现在我添加了“第一行和半行”,现在每一行都在不同的位置。因此,如果每一行都是一个块,那么看起来第一个块之后的每个块都发生了变化,即使内容是相同的。

有什么简单的解决方案吗?首先,我认为我可以对每个块进行哈希处理,然后创建指示正确块顺序的“目录”。这样,如果该块已经与散列一起存在,我可以轻松匹配。但是,我意识到哈希表解决方案只能用于可以预测和修复块的文件。例如,对于二进制文件,您几乎受限于固定字节大小的块,因此如果在开始时添加了更多数据并且您开始将其切割成 100k 块,那么您在后面的块中将获得与以前不同的数据。

有什么解决办法吗?

0 投票
2 回答
199 浏览

python - 持久数据库状态策略

由于多次编辑,这个问题可能变得有点不连贯。我道歉。

我目前正在编写一个 Python 服务器。它永远不会看到超过 4 个活跃用户,但我是一名计算机科学专业的学生,​​所以无论如何我都在计划它。

目前,我即将实现一个功能,将所有相关变量的当前状态备份保存到 CSV 文件中。我目前有 10 个,它们永远不会很大,但是……嗯,计算机科学专业的学生等等。

所以,我目前正在考虑两件事:

  1. 何时运行备份?
  2. 什么样的备份?

何时运行:

我可以在每次变量更改时运行备份,其优点是始终在备份中保留当前状态,或者每分钟一次,其优点是如果服务器每分钟不重写文件数百次变得很忙,但是如果我不检测自上次备份以来哪些变量发生了变化,则会对相同的数据进行大量无用的重写。

与此直接相关的是我应该做什么样的备份的问题。

我可以对所有变量进行完整备份(如果我在每次变量更改时都运行备份,这是没有意义的,但如果我每 X 分钟运行一次备份可能会很好),或者对单个变量进行完整备份变量(如果我在每次变量更改时进行备份会更好,但会涉及多个备份功能或对当前备份的变量的智能检测),或者我可以尝试某种增量备份文件(这可能涉及读取当前文件并用更改重写它,所以它可能非常愚蠢,除非在 Python 中有一个我不知道的技巧)。

我不能使用shelves,因为我希望数据可以在不同的编程语言之间移植(例如,java,可能无法打开 python 架子),我不能使用 MySQL 有不同的原因,主要是运行服务器的机器不支持 MySQL而且我不想使用外部 MySQL-Server,因为我希望服务器在 Internet 连接断开时继续运行。

我也知道有几种方法可以使用 python 和/或其他软件(sqlite例如)的预实现功能来做到这一点。我只是自己构建这些东西的忠实粉丝,不是因为我喜欢重新发明轮子,而是因为我喜欢知道我使用的东西是如何工作的。我构建这个服务器部分只是为了学习 python,虽然知道如何使用 SQLite 是有用的,但我也喜欢自己做“肮脏的工作”。

在我每天可能有几个请求的使用场景中,我倾向于“更改备份”的想法,但是如果由于某种原因,服务器变得非常非常繁忙,那么这种想法很快就会崩溃。

所以,我的问题基本上归结为:在这种情况下哪种备份方法最有用,我是否可能错过了另一种备份策略?您如何决定在您的应用程序中使用哪种策略?

请注意,我提出这个问题主要是出于对备份策略及其背后的想法的普遍好奇,而不是因为这种特殊情况下的问题。

0 投票
1 回答
108 浏览

backup - 备份执行配置

我想使用 Backup Exec 设置我认为是简单的备份过程。这就是我希望它的工作方式:

周二:

周三:

周四:

星期五:

如此一周又一周。

我遇到的问题是,一旦媒体容量用尽,我只想让媒体(磁带“A”和磁带“B”)覆盖最早的备份。看来我要做的就是选择一个接近媒体“应该”被最大化的时间。然后将AP设置为无限。

这是我在这里实现目标的最接近的方式吗?

谢谢大卫

0 投票
1 回答
531 浏览

svn - 从 SVN 永久删除修订

前言

我的 SVN 托管由第三方提供,这将我的使用量限制为 300MB。由于该项目规模适中,我从没想过这会是个问题。一旦应用程序投入生产,我意识到我需要某种备份机制。所以我写了一个shell脚本来导出数据库并压缩用户上传的文件。然后我将 .sql 和 .zip 文件都提交到 SVN(SVN 服务器与应用程序不在同一台机器上运行)。

然后今天我注意到我已经超过了配额。我很快意识到这一定是因为备份。

最后......问题

因为 .zip 是一个二进制文件,我猜每次提交时都会将整个文件添加到存储库中(而对于文本文件,只添加差异)?.zip 文件目前约为 60MB,因此鉴于备份脚本每天运行,我只能在 SVN 中存储 5 天的备份。

无论如何,我计划通过以下方式改善这种情况:

  • 更改备份脚本,以便将 .zip 的大小与 SVN 中的最新 .zip 的大小进行比较,并且仅在它们不同时才提交。如果自上次运行备份以来没有用户上传文件,则两者大小相同

  • 从 SVN 中删除所有旧版本的 .zip 文件以释放一些配额。但是,我不知道这是否真的可能?我的理解是,即使我从工作副本中删除文件并提交删除,文件也会从存储库的 HEAD 中删除,但所有之前提交的版本仍然存在(用完我宝贵的配额)。

有什么方法可以永久删除所有旧版本的 .zip,并使用上述更有效的备份策略重新开始。

0 投票
1 回答
17879 浏览

magento - Magento:备份选项

我对以下找到的 Magento 选项有疑问:

管理面板 -> 系统 -> 工具 -> 备份

“系统备份”、“数据库和媒体备份”和“数据库备份”有什么区别。

我想我可以弄清楚2和3之间的区别,2是上传的图像和类似的上传内容中没有存储在数据库中的文件也被备份了,但是1和2之间的区别是什么?

0 投票
4 回答
640 浏览

git - git 会复制我所有的文件吗?

我正在尝试使用 git 在网站上实施新的备份系统。虚拟专用服务器总共有 20GB 空间,其中 5GB 可用空间。

当我git add ./var/www(使用我最喜欢的.gitignore参数)运行时,我有一个巨大的 git 文件夹,它将我的硬盘驱动器填满。

目前尚不清楚为什么会发生这种情况,因为我希望.git目录包含有关位(元信息)的位,而不是我所有文件的二进制副本!

这里发生了什么?如果我的网站是 14GB,该.git目录会占用额外的 14GB 空间吗?

0 投票
1 回答
2393 浏览

mysql - 当mysqldump变得非常慢时怎么办

目前我的数据库差不多有 20 GB 大并且还在增长。我正在使用 mysqldump 进行每日备份,它变得非常慢。太慢了,同时新的连接堆积起来,最终导致这个错误:

(我可以提高接受的连接数量,但这不会做任何事情,因为连接仍然只是冻结,等待备份完成,这将导致超时)

我一直在阅读一些提高速度的选项,这就是我发现的:

  1. 选项 --quick (可能会有所帮助)
  2. 选项 --single-transaction (将防止表被锁定,但可能导致数据库变得不正确)
  3. 主从复制(可能是我能做的最好的事情,一个问题,我只有一台服务器可用)

主从复制听起来确实是最好的选择,因为我可以阻止从属更新,进行备份,然后让它恢复同步。问题是我只有一台机器可以使用。

我知道我可以在这台服务器上设置多个 mysql 实例。问题是:这样做是否明智?从站实际上仅用于生成该备份文件(将被复制到网络上的不同磁盘),以便主站可以保持活动状态。