使用 7zip 进行增量备份

使用 7zip 进行增量备份

我已经在 Google 上搜索过了,但找不到 7zip 命令行实用程序用于进行增量备份的命令。那么有人可以分享一下这个命令吗?

谢谢

顺便说一句,我发现了这个链接:http://wmug.co.uk/wmug/b/sean/archive/2009/03/20/powershell-amp-7zip-incremental-backup-solution.aspx。但它似乎是用于差异备份,即使它说的是增量备份。

答案1

应该很简单,使用它来创建并逐步更新档案:

7zr u -up0q3r2x2y2z1w2 {archive}.7z {path}

这一页为更新选项提供了参考。

现将其翻译如下:

  • p0- 如果“文件存在于档案中,但与通配符不匹配”,则从档案中删除该文件。
  • q3- 如果“文件存在于存档中,但不存在于磁盘上”,则从存档中删除该文件并在提取时将其从文件系统中删除
  • r2- 如果“文件不存在于档案中,但存在于磁盘上”,则将文件打包到档案中。
  • x2- 如果“档案中的文件比磁盘上的文件新”,则“将文件从磁盘压缩到新档案”。
  • y2- 如果“档案中的文件比磁盘上的文件旧”,则将较新的文件打包到档案中。
  • z1- 如果“档案中的文件与磁盘上的文件相同”,则重用该文件的打包版本。
  • w2- 如果文件大小不同,则将修改后的文件打包到档案中。

请注意,只有压缩是增量的:也就是说,7-Zip 将只压缩更新,重新使用未更新的压缩文件。存档文件仍将重新创建由 7-Zip 提供。

答案2

如果你要做一个增量备份,您需要向 7-zip 提供修改的文件列表(使用-i@fileList),并且您需要以某种方式详细说明此列表。在已删除问题的 archive.org 镜像中通过拇指驱动器进行离线增量备份您可以找到使用 md5 签名来创建文件列表的 Unix 命令行。

7-zip 更新操作允许创建一个次级存档,其中包含自基础/主存档以来发生的差异(包括已删除的文件)。这被正确地称为差异备份(正如问题本身所述)。

我在以下网址找到了一篇关于此主题的优秀文章WPCTips“使用 7-zip 进行差异备份”(已存档)。他们建议使用 GUI 程序(Toucan),或者使用这个命令行方法:

7z u {base archive.7z} -u- -"up0q3r2x2y2z0w2!{differential.7z}" {folder to archive}

7zr u -up0q3r2x2y2z1w2 {archive}.7z {path}这与ArtemGr 提出的有些不同:

  • -u-告诉主档案不应修改
  • "-up0q3r2x2y2z0w2!{differential.7z}"指定目标差异存档,以及针对每个条件/状态对每个文件执行的操作:添加文件系统中新文件或修改的文件,删除仅存在于 7zip 存档中的文件,忽略其余文件。
    请注意,除非引用了“!”字符,bash否则它将被截取。

如果你对这个神秘的细节感到好奇p0q3r2x2y2z0w2

<state> | State condition
p | File exists in archive, but is not matched with wildcard.   Exists, but is   not matched 
q | File exists in archive, but doesn't exist on disk.
r | File doesn't exist in archive, but exists on disk.
x | File in archive is newer than the file on disk.
y | File in archive is older than the file on disk.
z | File in archive is same as the file on disk
w | Can not be detected what file is newer (times are the same, sizes are different)

<action> | Description 
0 | Ignore file (don't create item in new archive for this file) 
1 | Copy file (copy from old archive to new) 
2 | Compress (compress file from disk to new archive) 
3 | Create Anti-item (item that will delete file or directory during extracting). This feature is supported only in 7z format. 

答案3

您可以通过改变时间方向轻松地进行增量备份。即,您始终将最新备份保留为完整副本,并将差异文件保留到过去。

# create the difference step into the past
7z u {base archive.7z} {folder to archive} -mx=9 -u- -up1q1r3x1y1z0w1!{decrement.7z}

# update the Archive to the latest files
7z u {base archive.7z} {folder to archive} -mx=9 -up0q0x2

基础档案始终包含最新版本,通过逐步应用“递减”,您可以重新创建旧版本。使用少量脚本,您可以将正确的编号应用于递减文件。

答案4

在批处理文件中,使用 enabledelayedexpansion,您需要用两个 ^^ 引用“!”,如下所示

7z u {existing archive.7z} -u- -up0q3r2x2y2z0w2^^!{new differential.7z} {folder or files to archive}

我花了一段时间才看到这个。

相关内容