使用 7zip 进行增量备份(寻求后续澄清)

使用 7zip 进行增量备份(寻求后续澄清)

对于任何想要从 cmd.exe 提示符开始使用 Google 搜索以获取有效、复杂、7-zip 差异备份的人...这是我的钱包备份脚本“ C Backup Wallets (7zip) (Differential).bat”。它将在我的 C: 盘中搜索任何加密货币钱包文件 ( *.dat, *.old, *.bak) 并将其备份到我的 E: 盘。

@echo off
cd "C:\Program Files\7-Zip\"

set base_archive=E:\= RAIN\= CRYPTO\== Wallet Backups\= 7zip Differential Backups\Wallets C-Disk.7z
set archive_folder=E:\= RAIN\= CRYPTO\== Wallet Backups\= 7zip Differential Backups
set file_list="C:\*wallet*.dat" "C:\*wallet*.bak" "C:\*wallet*.old" "C:\*.conf"

echo Output folder is %archive_folder%
echo Main archive name is %base_archive%
echo Looking on C: for %file_list%
echo.
echo.
REM pause

IF EXIST "%base_archive%" GOTO create_differentials ELSE GOTO create_main_archive

:create_main_archive
echo %base_archive% for C: not found! Creating it next... Hold on!
echo.
echo.
REM pause
7z u "%base_archive%" -xr!Microsoft\* -xr!windows\* -xr!?Recycle.Bin\* -r %file_list%
goto :eof 

:create_differentials
echo %base_archive% for C: found, updating any changed or new files (even when in use)... Hold on!
echo.
echo.
REM pause
7za u -mx9 -slp -snh -snl -ssw "%base_archive%" -xr!windows\* -r %file_list% -u- -up0q3r2x2y2z0w2!"%archive_folder%\Wallets C-Disk %DATE:~-4%-%DATE:~7,2%-%DATE:~4,2%_%TIME:~0,2%h%TIME:~3,2%.7z" 
goto :eof 

REM https://sourceforge.net/p/sevenzip/discussion/45798/thread/1e2eefc3be/
REM 7za u -mx9 -slp -snh -snl -sns -ssw "E:\= RAIN\= CRYPTO\== Wallet Backups\= 7zip Differential Backups\Wallets C-Disk.7z" -xr!windows\* -r "C:\*wallet*.dat" "C:\*wallet*.bak" "C:\*wallet*.old" "C:\*.conf" -u- -up0q3r2x2y2z0w2!"E:\= RAIN\= CRYPTO\== Wallet Backups\= 7zip Differential Backups\Wallets C-Disk %DATE:~-4%-%DATE:~7,2%-%DATE:~4,2%_%TIME:~0,2%h%TIME:~3,2%.7z" 

:eof

该脚本的作用是:1. 在 C:-disk 上查找所有匹配的内容,包括子文件夹 (-r)钱包数据,钱包老和钱包bak 2. 查找基本备份存档。如果不存在,请创建它 3. 为备份创建差异文件时,生成的存档名称将包含存档的日期和时间。如果您的语言环境设置与美国不同,则可能无法提供 yyyyMMdd 文件名...我还没有测试过。

PS:7za 默认不安装;x86 和 x64 均可在 7-zip 网站上作为额外下载。差异 zip 文件的输出文件如下所示:Wallet C-Disk 2019-09-13_13h53.7z。我将检查原因并纠正需要纠正的地方。


原始问题:

跟进:https://superuser.com/a/1382918/225479

请问一下...我在 Windows 10 上,在 cmd 提示符下,我尝试对所有钱包进行差异备份。

无论我怎么尝试,我都无法得到 -file existing archive.7z,只能得到new differential.7z-file。第二次运行后,我会收到一条错误消息,提示新的differential.7z 文件已经存在...

我试过:

C:\Program Files\7-Zip>7z u  "{existing archive.7z}" -u- -"up0q3r2x2y2z0w2!{new differential.7z}" -r "C:\*wallet*.dat"

7z u  "{c:\temp\existing archive.7z}" -u- -"up0q3r2x2y2z0w2!{c:\temp\new differential.7z}" -r "C:\*wallet*.dat"

7z u "c:\temp\existing archive.7z" -u- -"up0q3r2x2y2z0w2!c:\temp\new differential.7z" -r "C:\*wallet*.dat"

另一个网站我尝试了这个:

7z u c:\temp\basefile.7z -r c:\*wallet*.dat -u- -up0q3r2x2y2z0w2!c:\temp\differential.7z

还有更多变化。基础文件/现有的 archive.7z 文件从未生成...为什么?我在这里到底在搞什么鬼? :/ 我假设这 1 个命令应该可以完成所有工作;当不存在存档时创建一个存档,如果存档存在,则仅更新差异...不是吗?通配符是这里的问题吗?

编辑后:更多测试...我现在测试了这个:(7z u c:\temp\basefile.7z -r c:\temp\ -u- -up0q3r2x2y2z0w2!c:\temp\differential.7z找到 C: 上所有名称中包含 temp 的文件夹并压缩它们)。它只会生成differential.7z 文件,而不会生成 basefile.7z。如果我自己提供 basefile.7z,该命令会创建differential.7z 文件,其大小与我自己提供的 basefile.z7 相同(因此它会再次存储所有内容,而不仅仅是差异)。如果differential.7z 已经存在,则命令会失败,因为文件differential.7z 已经存在...

编辑后继续:我只是为了好玩才运行的,7z u "c:\temp\existing archive.7z" -r "C:\*wallet*.dat" -ms=off然后运行7z u "c:\temp\existing archive.7z" -u- -"up0q3r2x2y2z0w2!c:\temp\new differential.7z" -r "C:\*wallet*.dat" -ms=off。现在第一个差异文件是正确的。但我无法再次运行它来创建第二个差异文件。

所以……我现在的主要结论是:1. 您需要创建第existing archive.7z一个(在单独的批处理文件中)?创建基本存档后,您可以运行一个增量备份,因此 2. 您需要扩展命令以将时间和日期戳添加到增量文件(使用 7zip 或某些批处理脚本)。我说得对吗?:)

相关内容