![使用 7zip 进行增量备份](https://linux22.com/image/1349275/%E4%BD%BF%E7%94%A8%207zip%20%E8%BF%9B%E8%A1%8C%E5%A2%9E%E9%87%8F%E5%A4%87%E4%BB%BD.png)
我已经在 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}
我花了一段时间才看到这个。