- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
是否有任何经过时间验证的策略、算法和开源数据存储格式有助于为慢速网络驱动器开发可靠、快速的增量备份软件?
我打算使用qt framework或.net(还没有决定),但编程语言并不重要,因为我在寻找想法和解决方案,而不是代码(尽管有sdk或库会更好)。
我不打算创建和企业级的客户机-服务器解决方案,但一些简单但仍然可以根据我的需要调整的东西。
长话短说:
我一直在努力寻找可靠的备份软件,它至少支持数据和文件名的简单混淆(xor加密对我来说很好),并且能够枚举和提取备份档案中的单个文件。
我想备份到模拟网络驱动器(使用expandrive或netdrive)。
我尝试过许多不同的程序,但每一个程序都至少有一个关键缺陷由于算法复杂,有些程序备份到网络驱动器的速度太慢。有些程序将所有内容压缩成一个大的zip或自定义格式的文件,这些文件可以分成多个部分,但如果我尝试枚举和提取单个文件,通常会导致超时。有些程序会加密文件内容,但会完全打开文件名,甚至不会混淆它们。
我也尝试过一些专用程序,这些程序直接备份到云服务,但它们被简化了,或者没有为google drive提供任何加密,我打算主要使用这些程序。
这就是为什么我决定创造一些定制,我可以调整我的喜欢这也是我学习如何正确实施备份过程的一个机会。
目前我的想法是把我的备份分成一些小的(100MB?50兆?还不确定……)按顺序编号的存储桶(文件夹)我可以在当前正在进行的bucket中存储一个锁文件。如果备份进程被中断并重新启动,我可以检查锁文件是否存在,然后我知道我必须从头开始重新启动该存储桶。
有了这个bucket系统,我必须确保每个bucket都有完整的文件这意味着如果我存储一个1GB的文件,我不能将它分成更多的部分,因为这会使自定义文件寻址表等的事情变得非常复杂。因此,我的bucket大小只是一个推荐的目标,而不是严格的目标。
另一个问题是如何存储文件列表及其修改时间,这样我就可以实现基于时间戳的增量备份,并尽快加载列表。我不确定把每个桶的文件列表存储在那个桶里是否是个好主意。也许最好将它存储在一个单独的文件中,以便我可以立即下载它?但这样我可能会损坏文件列表,无法恢复它。因此,最好将文件列表存储在bucket中,但我不确定是否遗漏了什么。
对于加密,正如我所说,简单的xor对我来说很好,但是如果我需要更好的东西(和更多的资源需求),我可以添加一些aes-有很多库可以完成这个任务。我还想加密文件列表。但我不确定我应该如何处理文件-我应该单独加密每个文件还是应该加密整个bucket?
我最关心的是可靠性。如何检查存档中的文件是否未损坏?腐败是我把档案藏在桶里的原因之一。如果数据损坏,则只有一个或多个存储桶会损坏。但如何发现腐败呢我可以计算校验和,但我不确定如何快速计算,以及应该为单个文件计算哪些校验和?整桶?以及使用什么算法来避免由于计算校验和而使备份过程变得太慢?
我可以按如下方式实现重复数据消除在备份期间,内存中同时有两个文件列表(服务器和本地)。如果我遇到两个文件名,我可以进行校验和,看看它们是否相同,如果相同,我只将文件存储在一个存储桶中,但在第二个存储桶的文件列表中,我会标记该文件与第一个存储桶中的另一个文件重复,并且当从存档中还原时,我可以提取该文件并把它复制到两个地方。
所有这些问题都让我产生了一个异端的想法——也许我可以使用git?
但我怀疑它是备份100GB数据的好工具。至少,我可以从git中学到一些有用的技巧,但我仍然不确定哪些想法会或不会用于备份目的。
如果有人做过类似的实现,听到你的经验会很好,也许会听到一些想法和警告,这些想法在直觉上看起来是对的,但在实践中可能会变得不好。
最佳答案
这是一个非常雄心勃勃的目标,创建一个非常通用的安全备份系统。虽然你可以很好地完成你想要做的事情,但是它可能会比预期的要花费指数级的时间,因为每一个单独的部分,比如异或数据和文件名,都可能是非常耗时的检查,逻辑错误可能会以一路丢失有价值的数据为代价。
一个建议是重新评估所有现有的商业选项,确定它们离精确需求有多近,比如80%、70%、90%……然后问:“商业工具不值得拥有的大量X小时是否值得大量的工时和可能的数据损失,我不仅要在其他地方重新发明70%、80%、90%,而且还要也可以加上剩余的x%。”或者,联系一个供应商并说“嘿,让我们一起工作,让你的工具多做x%。”会更容易吗?我想成为一名测试人员。”
有一些公司花了很多时间开发和测试商业产品,这些产品已经通过了多年的审查。在滚动自己的解决方案的同时,有时也支持现有的商业软件供应商,他们将数据加密、拉链、散列、混淆等作为全职工作。利用他们的经验,并与他们合作,以实现一个伟大的解决方案。
关于algorithm - 开发可靠,简单的网络备份软件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32035585/
前言 在进行Maven开发时,往往需要下载大量jar包,而由于网络不稳定等其他因素可能导致jar未下载完毕,然后保留了lastUpdated文件,导致无法更新失效的jar包。 本文分享 bat脚本,自
按字母顺序排序并不是我们花太多时间担心的事情。我们在很小的时候就学习了字母表,现在我们知道它(拉丁文)以 A 开头,然后是 B,然后是 C 等等,一直到 Z。 但是这个订单究竟存储在计算机系统中的什么
我尝试使用可分离为 2 个一维向量的二维矩阵来证明二维傅里叶变换的信号属性的可分离性。地点: f(x,y) = f(x)*f(y) 那么 F(u,v) = F(u)*F(v) 使用以下代码: % Se
我需要为几个小型sqlite数据库编写文档。想描述数据的使用方式,包括表和行说明以及示例数据。 是否可以使用MySQL Workbench?如果没有其他选择,或者我可以使用任何模板? TIA! 最佳答
我正在尝试使用旧版本(例如:1.4.5)安装 memcached,但我不知道该怎么做。 brew install memcached安装最新的。 我也试过 brew install memecache
背景 多年来,我一直使用自己的类似贝叶斯方法,根据大型且不断更新的训练数据集对来自外部来源的新项目进行分类。 每个项目都有三种类型的分类: 30 个类别,其中每个项目必须属于一个类别,且最多属于两个类
嗨,我需要确定 4 个数字是否相等。数字是 size(A,1)、size(B,1)、size(C,1) 和 size(D,1),其中,例如A = [1 2; 3 4], B=[1 2 3, 4 5 6
Wikipedia 中的文章似乎太冗长了。 我将框架理解为一组精心设计的库和工具。 Qt 框架为跨平台 GUI 提供了一组库/工具。 cocoa 框架为 Mac 做了同样的事情。 软件框架的实际定义是
我们的客户最近发现了这个网站: http://mydeco.com/3d-planner/ 它有一个非常非常奇特且组合良好的 3d CAD Web 应用程序,似乎是使用 jQuery 编写的,而不是
我们正在寻找一种独立的(非 cms)日历解决方案来显示在网络上。它可以是开源的或付费服务。 我们主要是在寻找一种在 Web 上显示日历的方法,其中包含事件发生的时间和事件的名称。如果它可以按周、月、年
我想知道与软件相关的“质量保证”和“质量科学”之间的区别。 我在Google上进行了研究,但未找到有关“质量科学”的任何信息。 最佳答案 Based on the link you have prov
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我有一个由 2 个方程和 2 个未知数组成的系统,我想使用 MATLAB 求解,但不知道如何编程。我得到了一些有关 Gamma 分布的信息(平均值为 1.86,90% 的间隔介于 1.61 和 2.1
给定一个矩阵,其中 1 是当前子集 test = 0 0 0 0 0 0 0 0 0 0 0 0
我在组合 Matlab“数据”变量的重复元素时遇到问题。我可以使用 unique 和 sort 轻松组合这些值。 [sorted,idx] = sort(data); [~,ij] = unique(
我在做的问题中有这么一段代码,如下图。定义部分只是为了向您展示数组的大小。下面我粘贴了矢量化版本 - 它慢了 2 倍以上。为什么会这样?我知道如果矢量化需要大的临时变量,我就会发生,但(看起来)这里不
我有一个 3D 矩阵,我想将它的每个 2D 分量存储在另一个 2D 矩阵的行中,该 2D 矩阵有许多行作为 3D 矩阵的第 3 维。 我该怎么做? 最佳答案 与 permute & reshape -
如果计算机能够使用纯 JavaScript(Google V8)、C++(Windows、Mac OS 和 Linux)运行程序/软件而没有任何性能问题,是否有任何好的方法可以通过要求尽可能少尽可能从
我的团队的任务是将用于播放媒体文件的全屏、信息亭式应用程序从 Windows 迁移到嵌入式 ARM Linux(瘦客户端)。我们需要在 sd/1080p 中支持 mpeg-2 播放以及 HTML、SW
我们有数以千计的具有白色或黑色或渐变背景的产品图片。我们正在寻找可以去除图片背景的软件或服务。我们需要一款能够很好地完成这项工作的智能软件。 最佳答案 在 photoshop 中,您可以记录 Acti
我是一名优秀的程序员,十分优秀!