问题标签 [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 回答
1195 浏览

sql-server - SQL Server 差异备份文件大小比前一个小?

我有一个在 SQL Server 2008 DBMS 上运行的生产系统,处于完全恢复模式。

我每天午夜进行一次完整备份,每两小时进行一次日志备份,每 6 小时进行一次差异备份(06:00、12:00、18:00,但不是午夜,因为那时会进行完整备份)。

然而,最近几天我注意到 18:00 的差异备份文件大小小于 12:00 的差异备份文件大小。有时,12:00 之一小于 06:00 ...

直到最近几天我才经历过这种行为。

从 Microsoft 文档中读取,差异备份的文件大小应始终大于前一个,直到进行新的完整备份。

任何人都可以解释可能导致这种情况的原因吗?

谢谢。

0 投票
2 回答
143 浏览

backup - 如何备份源存储库和压缩目标文件夹?

所有源都在 Windows 操作系统上,目标备份在 Unix 系统上(我们使用的是 Samba)。

我的源存储库类似于:

我想得到一个类似于:

第一次备份后,我只备份自上次备份以来发生变化的文件。(如果已创建新文件夹/文件,则备份)。

有人知道我的备份需求的工具或脚本吗?我们可以用 Robocopy 做到这一点吗?

0 投票
2 回答
2907 浏览

mysql - mySQL 每日从一张表备份到另一张表

如果我有 2 个具有相同定义的表,我将如何每天从其中备份数据?我可以使用 mySQL Administrator 来执行这样的事情吗

  • 每天中午 12:00,将 main_table 中的所有行复制到 backup_table
  • 最好是增量备份,因为将对 backup_table 中的记录进行一些更改,我不希望新的备份消除这些更改。

谢谢

0 投票
1 回答
204 浏览

sql-server - 大型数据库的维护窗口和恢复

我们的一个团队正在开发一个较大的数据库(约 500GB)并从那里增长(我知道 500 Gig 对你们中的许多人来说可能看起来很小,但它将是我们商店中较大的数据库之一)。他们正在努力解决的问题之一是备份和恢复数据库。基本上,数据库将有几个“数据”表和一个用于存储图像/文档的表。我们需要完成以下工作:

  • 能够快速将数据表(无图像)备份和恢复到我们的测试服务器,以进行调试和测试。
  • 如果发生灾难性数据库故障,请仅恢复数据表以使大部分应用程序尽快启动并运行。然后,尽可能恢复图像表。
  • 在分配的每晚时间窗口(几个小时)内备份数据库。

我的问题是:

  1. 是否有可能实现前两个目标,同时仍将图像存储在同一个数据库中?如果是这样,我们会使用文件组、文件流或其他东西吗?
  2. 其他商店如何在合理的时间窗口内备份他们的数据库,同时保持高可用性?您是否复制到第二台服务器并从那里备份?
0 投票
3 回答
6050 浏览

c++ - 您可以从调试编译的二进制文件中检索源代码吗?

我四处挖掘,发现了一个我在大约 8 年前用 Visual C++ 6.0 编写的东西的可执行文件。我从不备份源代码,但我认为我总是在调试模式下编译所有内容。我还隐约记得在某处听到“除非你有编译器的调试符号或其他东西,否则你不能将可执行文件反编译成源代码”。该代码将具有情感价值,但我检索它并不是关键任务。

这就是背景;以下是问题:

  1. 如何检查可执行文件是否在调试模式下编译?
  2. 如果是,调试模式可执行文件附带什么信息?
  3. 我可以检索完整的源代码吗?如果做不到这一点,与发布版本相比,我在反编译时可以获得任何实质性的改进吗?如果是这样,怎么做?

谢谢,

——迈克尔·伯格

0 投票
2 回答
458 浏览

mysql - 备份/恢复mysql数据库中的数据

如何快速备份/恢复mysql数据库中的数据?

0 投票
1 回答
2285 浏览

python - 流 rdiff - 增量差异?

我有一个使用 rdiff 进行在线备份的产品。目前发生的情况是:

  1. 将文件复制到暂存区域(这样文件在我们处理时不会消失或被修改)

  2. 散列原始文件,并计算 rdiff 签名(用于差异差异) 计算 rdiff 差异差异(如果我们没有先前版本,则跳过此步骤)

  3. 压缩和加密产生的增量差异

目前,这些阶段的执行方式各不相同。最终结果是我们多次迭代文件。对于小文件,这没什么大不了的(尤其是考虑到磁盘缓存),但对于大文件(10 甚至 100 GB),这才是真正的性能杀手。

我想将所有这些步骤整合到一个读/写通道中。

为此,我们必须能够以流方式执行上述所有步骤,同时仍保留所有“输出”——文件哈希、rdiff 签名、压缩和加密的增量差异文件。这将需要从源文件中读取一个数据块(比如 100k?),然后在内存中迭代文件以更新哈希、rdiff 签名、进行增量差分,然后将输出写入压缩/加密输出流. 目标是大大减少我们所做的磁盘抖动量。

目前我们使用 rdiff.exe(它是底层 librsync 库之上的一个薄层)来计算签名并生成二进制增量。这意味着这些是在一个单独的过程中完成的,并且是一次性完成的,而不是流式的。

我怎样才能使用 librsync 库来做我需要的事情?

0 投票
1 回答
6192 浏览

android - Android SharedPreferences 备份不起作用

我一直在做有关如何在我的 Android 应用程序中备份 SharedPreferences 的功课,尤其是使用反射来保持向后兼容性。至少我一直在努力。不幸的是,我的代码实际上都没有创建备份!这包括在模拟器上强制执行adb bmgr命令,如此所述。所以我想知道社区是否可以帮助我并在此过程中提供一些更好的文档?

这是我的代码。为了使其对其他人尽可能通用,我将简单地使用包名com.example.andy调用我的应用程序Andy

Android 清单(摘录)

备份助手.java

注意:/data/data/com.example.andy/shared_prefs/com.example.andy_preferences.xml

BackupAgentWrapper

最后,在运行时启动备份的命令。在我的应用程序中,此代码从我的应用程序(不是主要活动)可用的类中运行,该类在创建时作为上下文传递然后存储在私有变量 mContext 中。

总而言之,上面的函数和下面的命令实际上都没有备份任何数据:

0 投票
2 回答
236 浏览

version-control - 寻找基于版本控制的备份工具

我一直在旅行(每 2-3 个月,我在一个新的城市或国家),没有真正的永久地址。在过去的几年里,我设法解决了所有的问题……除了有一个好的备份/同步解决方案。

我有一个 macbook pro 和一个 thinkpad w701(它运行两个不同的虚拟机)。这很痛苦,因为在一台机器上进行更改(例如添加一些新音乐或更新一些演示文稿)需要我跟踪哪些地方发生了哪些变化。然后每隔几周,在同步三个不同的图像后,我会尝试手动将其同步到我随身携带的备份驱动器上。

这几乎是有史以来最烦人的事情......尤其是当我有时在备份驱动器上进行更改并且我必须记住不要覆盖它们时。

我真正想要的是一些简单的东西,它有更多的版本控制,比如工作流:

  • 我可以将更改推送到某个中央服务器(例如提交。示例:我将一些更改添加到我的音乐目录,然后我可以将这些更改提交到备份)

  • 在备份发生之前,我希望看到一个“差异”:哪些文件将被覆盖,哪些文件较新,等等

  • 我可以从服务器访问我的文件(如果我正在制作音频混合并需要提取一些歌曲,我想从服务器获取它们。所有备份不能只是一个大的二进制压缩 zip blob )

Dropbox 非常接近,但它缺少“提交”和“差异”功能。我曾考虑过使用 Amazon AWS,但这还不够,因为我看不到差异,也无法直接从 aws 访问我的文件。

有任何想法吗?还是有其他解决方案?我想我真正想要的是云中的 TimeMachine,或者甚至是可以通过互联网安全访问的 NAS

0 投票
3 回答
866 浏览

c++ - 增量备份:如何跟踪文件删除

我有一个在 C++ 上运行的异地备份解决方案,可以将文件分成块,并使用 SQLITE3 数据库上的 md5 哈希跟踪块。并将块与数据库一起传输到远程站点。

因此,当我想要进行还原时,它会查询 SQLITE3 数据库并相应地还原块。

当第一个备份运行时,它会创建一个名为 base_backup 的大表。每个后续文件更改或新文件都作为新记录添加到新表中。如果我想进行恢复,我会查询 base_backup 表以及所有差异并恢复文件。

备份运行的方式,它扫描给定文件夹中的所有文件以查找存档位,如果它被清除,则验证数据库中是否不存在记录并决定是否备份它。

来到我的问题,如果在本地计算机上删除了文件,我如何跟踪它并相应地更新异地备份?因为当我进行还原时,我不想还原所有垃圾文件。是否知道文件是否已从文件夹中删除?我不想从数据库运行验证检查,因为它需要太长时间。