我必须编写一个脚本来对(目录)进行差异备份。差异备份:
差异备份仅备份自上次完整备份以来更改的文件。例如,假设您在星期日进行完整备份。星期一您仅备份自星期日以来更改的文件,星期二您仅备份自星期日以来更改的文件,依此类推,直到下一次完整备份。
假设例如:
星期一——执行完整备份并保存文件集。
星期四 - 想要使用相同的文件集执行差异备份。差异备份中备份了自完整备份以来发生更改的所有文件。
从现在开始,如果我需要,我将使用该脚本,因此请建议继续或如何编写脚本来自动执行此操作。
答案1
不是相当您所要求的,但效果非常相似(即,您只为实际已更改的文件“支付”存储费用):
使用 rsync,为未改变的文件创建硬链接。
最大的优点是每个“快照”本身都是一个完整的备份,即在恢复时您只需恢复一个快照(而不是恢复基础及其增量)。
关于该方法的详细文档可参见www.mikerubel.org/computers/rsync_snapshots/
答案2
表里不一通过生成加密的 tar 格式卷并将其上传到远程或本地文件服务器来备份目录。由于 duplicity 使用 librsync,因此增量存档节省空间,并且仅记录自上次备份以来发生变化的文件部分。由于 duplicity 使用 GnuPG 来加密和/或签署这些存档,因此它们不会被服务器监视和/或修改。
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 差异