关于压缩工具 7z(7-zip) 的选项 -u(更新压缩档案中的文件)的解读

一、选项介绍

更新选项 -u 指定压缩档案中文件的更新及创建的方式。可以和此选项结合使用的命令:a (添加), d (删除), u (更新) 。

语法格式:-u[-][action_set][!{new_archive_name}]

[action_set] ::= [state_action]...
[state_action] ::= [state][action]
[state] ::= p | q | r | x | y | z | w
[action] ::= 0 | 1 | 2 | 3

(一)参量说明

  1. 连字符(-)
    对原压缩档案不进行任何更新。

  2. {new_archive_name}
    指定新压缩档案的路径。

  3. [state]
    [state] ::= p | q | r | x | y | z | w

每个文件名都会赋予下列六个变量:

[state]状态说明磁盘上的文件压缩档案中的文件
p文件在压缩档案中,但并不和磁盘上的文件相匹配。存在,但并不匹配
q文件在压缩档案中,但磁盘上并不存在。不存在存在
r文件不在压缩档案中,但磁盘上存在。存在不存在
x压缩档案中的文件比磁盘上的文件新。较旧较新
y压缩档案中的文件比磁盘上的文件旧。较新较旧
z压缩档案中的文件和磁盘上的文件相同。相同相同
w无法检测文件是否较新(时间相同但大小不同)
  1. [action]
    为适当的 [state] 指定动作。
    [action] ::= 0 | 1 | 2 | 3

您可以指定下列四个动作变量中的任意一个:

[action]说明
0忽略文件(在压缩档案中不为此文件创建项目)
1复制文件(用压缩档案中的新文件覆盖旧文件)
2压缩文件(将磁盘上的新文件压缩到档案中)
3创建剔除项(释放过程中将删除文件或目录项)。此功能只支持 7z 格式。

二、示例

创建新压缩档案 update.7z 并将当前目录中的 exist.7z 压缩档案里所有不同文件写入此压缩档案。并不更改 exist.7z 压缩档案的内容。

7z u c:\1\exist.7z -u- -up0q3x2z0!c:\1\update.7z * -r
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
尽管如今共享大文件比以往任何时候都容易,但是在某些情况下,您仍需要压缩文件。存档不仅减轻了收件人计算机的负担,而且还大大提高了文件的带宽和传输速度。7-Zip ZS 是著名 7-Zip 的分支,它提供了一种简单明了的方法来创建和解压缩档案,验证文件的哈希值以及测试压缩文件的潜在错误。 开源免费解压缩软件 7-Zip ZS 文多语免费版开源免费解压缩软件 7-Zip ZS 文多语免费版 支持绝大多数存档格式 GUI与7-Zip相似,因此,从界面或上下文菜单创建新存档或解压缩数据应该没有问题。说到上下文菜单,这是一个非常受赞赏的功能,它使管理压缩文件变得相当容易。 就受支持的存档而言,该应用程序与多种格式兼容,包括但不限于ZIP,RAR,LZA,ARJ,TAR。 GZ和ISO。如预期的那样,该应用程序包括一些用于压缩算法的额外编解码器,即Zstandard,Brotli,LZ4,LZ5,Lizard和Fast LZMA2。 它可以测试文件的完整性和安全性 另一个值得注意的功能是文件哈希计算器,它是一个方便的选项,使您可以验证所管理的压缩文件的完整性。与7-Zip不同,该程序可以计算其他几个哈希,例如XXH-64,XXH-32,BLAKE2sp,CRC-32或CRC-64。 此外,您可以创建一个受密码保护的加密存档,对文件名进行加密,选择首选的更新模式,拆分为卷,创建SFX并选择路径模式。无论执行什么操作,您都会很高兴得知它消耗了少量的系统资源。 方便的工具来管理压缩文件 7-Zip ZS是一款纤巧且轻巧的工具,具有对归档文件的扩展支持,它为您提供了轻松创建,测试,解压缩和管理此类文件的方式。
要使用7-Zip的lzma压缩文件,您需要遵循以下步骤: 1. 下载7-Zip SDK并解压缩到您的计算机。 2. 使用以下代码包含必要的头文件: ```c #include "lzma/LzmaEnc.h" #include "lzma/LzmaDec.h" ``` 3. 创建一个LzmaEncHandle和LzmaEncProps结构体来设置压缩选项: ```c LzmaEncHandle enc = LzmaEnc_Create(&g_Alloc); LzmaEncProps props; LzmaEncProps_Init(&props); props.level = 5; // 压缩级别 props.dictSize = 1 << 26; // 字典大小 props.reduceSize = (1 << 30) - 1; // 压缩文件大小 props.lp = 0; // 用于匹配模式的扩展字节数 props.pb = 2; // 用于匹配模式的字节数 props.fb = 128; // 用于匹配模式的字节数 props.numThreads = 2; // 使用的线程数 ``` 4. 使用LzmaEnc_SetProps函数将压缩选项应用于LzmaEncHandle: ```c LzmaEnc_SetProps(enc, &props); ``` 5. 打开要压缩的大文件,并为输出文件创建一个文件句柄: ```c FILE* inFile = fopen("input_file", "rb"); FILE* outFile = fopen("output_file.lzma", "wb"); ``` 6. 编写循环,将文件分段读取并压缩: ```c int inSize = 1 << 16; // 每次读取的输入文件大小 int outSize = 1 << 16; // 每次写入的输出文件大小 unsigned char* inBuf = (unsigned char*)malloc(inSize); unsigned char* outBuf = (unsigned char*)malloc(outSize); while (true) { // 读取输入文件 size_t bytesRead = fread(inBuf, 1, inSize, inFile); if (bytesRead == 0) { break; } // 压缩数据 size_t outPos = 0; size_t outLen = outSize; LzmaEnc_Encode(enc, outBuf, &outLen, inBuf, bytesRead, &g_Alloc, &g_Alloc); // 写入输出文件 fwrite(outBuf, 1, outLen, outFile); } ``` 7. 关闭文件句柄和LzmaEncHandle,并释放内存: ```c fclose(inFile); fclose(outFile); LzmaEnc_Destroy(enc, &g_Alloc, &g_Alloc); free(inBuf); free(outBuf); ``` 这样,您就可以使用7-Zip的lzma压缩文件了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值