如何在linux中做差异备份?

如何在linux中做差异备份?

我必须编写一个脚本来对(目录)进行差异备份。差异备份:

差异备份仅备份自上次完整备份以来更改的文件。例如,假设您在星期日进行完整备份。星期一您仅备份自星期日以来更改的文件,星期二您仅备份自星期日以来更改的文件,依此类推,直到下一次完整备份。

假设例如:

星期一——执行完整备份并保存文件集。

星期四 - 想要使用相同的文件集执行差异备份。差异备份中备份了自完整备份以来发生更改的所有文件。

从现在开始,如果我需要,我将使用该脚本,因此请建议继续或如何编写脚本来自动执行此操作。

答案1

不是相当您所要求的,但效果非常相似(即,您只为实际已更改的文件“支付”存储费用):

使用 rsync,为未改变的文件创建硬链接。

最大的优点是每个“快照”本身都是一个完整的备份,即在恢复时您只需恢复一个快照(而不是恢复基础及其增量)。

关于该方法的详细文档可参见www.mikerubel.org/computers/rsync_snapshots/

答案2

表里不一通过生成加密的 tar 格式卷并将其上传到远程或本地文件服务器来备份目录。由于 duplicity 使用 librsync,因此增量存档节省空间,并且仅记录自上次备份以来发生变化的文件部分。由于 duplicity 使用 GnuPG 来加密和/或签署这些存档,因此它们不会被服务器监视和/或修改。

http://duplicity.nongnu.org/

Duplicity 实施的是传统备份方案,其中初始存档包含所有信息(完整备份),将来仅添加更改的信息。但是,与其他类似解决方案相比,它可能具有以下优势:

  • 易于使用:虽然 duplicity 是一个命令行实用程序,但其语义相对简单。举一个简单的例子,此命令通过 scp 将 /usr 目录备份到远程主机 host.net:duplicity /usr scp://host.net/target_dir

  • 加密和签名的档案:duplicity 生成的档案可以使用 GnuPG(自由软件密码学的标准)进行加密和签名。远程位置将无法推断出备份的更多信息,只能推断出备份的大小和上传时间。此外,如果远程端修改了档案,则在恢复时会检测到。

  • 带宽和空间效率高:Duplicity 使用 rsync 算法,因此在进行增量备份时,只有文件的更改部分才会发送到存档。例如,如果一个长日志文件只增加了几行文本,则会将小的差异发送到存档并保存在存档中。其他备份程序可能会保存文件的完整副本。

  • 标准文件格式:尽管存档数据将被加密,但其中的内容是标准 GNU-tar 格式的存档。完整备份包含普通 tarball,增量备份是新文件和以前备份的增量的 tar 存档。增量采用 librsync 的命令行实用程序 rdiff 生成的格式。虽然您永远不必手动查看 duplicity 存档,但如果有需要,可以使用 GnuPG、rdiff 和 tar 生成和处理它们。

  • 远程协议的选择:Duplicity 对其存档服务器的要求并不高。只要文件可以保存到、读取、列出和删除,该位置就可以用作 duplicity 后端。除了增加用户的选择之外,它还可以使服务器更安全,因为客户端只需要最少的访问权限。

目前支持本地文件存储、scp/ssh、ftp、rsync、HSI、WebDAV、Tahoe-LAFS 和 Amazon S3,添加其他文件存储也不难。

答案3

man dump

 -level#
              The dump level (any integer). A level 0, full backup, guarantees
              the  entire  file  system  is copied (but see also the -h option
              below). A level number above 0, incremental backup,  tells  dump
              to copy all files new or modified since the last dump of a lower
              level. The default level is 0. Historically only levels 0  to  9
              were  usable  in  dump,  this  version is able to understand any
              integer as a dump level.

值得一读的是“汉诺塔”增量备份方案,并了解其使用的原因和方式。

也可以看看http://surf.ml.seikei.ac.jp/~nakano/dump-restore/dump-restore-mini-HOWTO.en.html#ss3.3

http://en.wikipedia.org/wiki/Incremental_backup意思是

Unix 的一个示例是:

rsync -e ssh -va --link-dest=$dst/hourly.1 $remoteserver:$remotepath $dst/hourly.0

rsync 选项的使用--link-dest使得该命令成为增量备份的示例。

答案4

我使用 Butterfly Backup (https://github.com/MatteoGuadrini/Butterfly-Backup)。我将所有备份组织在一个简单的目录中,并且可以直接与文件系统交互,而无需切换到其他任何东西。它还提供恢复和导出选项。

简单差异备份命令:

$ bb backup --computer mypc --destination /backup --data 用户配置 --type Unix --mode 差异

相关内容