zip 分卷压缩 md5
时间: 2023-11-12 21:55:13 浏览: 193
zip分卷压缩是将一个较大的文件或文件夹分成多个指定大小的压缩包进行压缩的过程。在Linux系统中,可以使用以下命令进行zip分卷压缩:
1. 正常压缩:使用命令 "zip a.zip a.dat" 将文件 a.dat 压缩成 a.zip。
2. 拆分zip:使用命令 "zip -s 100m a.zip --out ziptest" 将 a.zip 拆分成大小为 100MB 的多个分卷压缩包,命名为 ziptest。
3. 合并:使用命令 "cat ziptest.* > aa_bak.zip" 将多个分卷压缩包 ziptest 合并成一个完整的压缩包 aa_bak.zip。
4. 检验:使用命令 "md5sum a.dat" 检验原始文件 a.dat 的MD5值,并与解压后的文件对比,确保压缩与解压的一致性。
请注意,以上命令中的文件名和文件路径需要根据实际情况进行替换。
相关问题
windows分卷压缩
Windows下有多种压缩分卷格式可供选择。在进行分卷压缩时,你可以使用压缩工具将文件切割成多个分卷,并生成相应的压缩文件。这样可以方便地进行文件传输和存储。压缩后的分卷文件可以在Linux中进行解压缩。
对于压缩前后文件的一致性校验,你可以使用md5sum命令来比较压缩前后文件的MD5值,确保解压后文件的完整性和准确性。
关于分卷压缩的具体操作和参数设置,你可以参考相关的参考资料。在Linux中,使用zip命令对文件进行分卷压缩时,可以使用"-s"参数来设置分卷的大小,例如"-s 100m"表示每个分卷的大小为100MB。
如果你需要在Linux中解压分卷压缩包,可以使用unzip命令进行解压。对于分卷压缩包,你可以使用zip命令将多个分卷合并为一个文件,然后再使用unzip命令进行解压缩。
希望以上信息对你有所帮助。如有其他问题,请随时提问。<em>1</em><em>2</em><em>3</em>
#### 引用[.reference_title]
- *1* *2* [Linux和Win常用分卷压缩和合并压缩方法(主要Linux)](https://blog.csdn.net/u010886217/article/details/109642158)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item]
- *3* [Windows zip命令行分卷压缩与解压](https://blog.csdn.net/qazwsxrx/article/details/120459240)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item]
[ .reference_list ]
ios libarchive 分卷压缩oc代码
iOS 中的 LibArchive(也称为libzstd或libarchive)库提供了一组用于处理归档(如ZIP、tar等)文件的功能,包括分卷压缩。在Objective-C中使用它进行分卷压缩通常涉及到以下几个步骤:
1. 引入库依赖:首先确保在项目中包含了libarchive库的头文件。对于静态链接,你需要将其添加到项目的构建设置中;如果是动态链接,需要在`Link Binary With Libraries`部分添加。
```objective-c
#import <CommonCrypto/CommonDigest.h>
#import <libarchive/archive.h>
```
2. 创建一个Archive Writer:创建一个`ZSTDCompressionParameters`结构体来配置压缩级别和策略,然后使用`arc4random_uniform`生成一个随机字符串作为卷标。
```objective-c
ZSTD_CCtx_params params = ZSTD_defaultCCtxParams();
params.cdictSize = 0; // 如果不需要词典,则设为0
const char* volumeLabel = [@"Volume" stringByAppendingFormat:@"%lu", arc4random_uniform(UINT32_MAX)];
ZSTD_CCtx* compressionContext = ZSTD_createCCtx(¶ms);
ZSTD_startCompress(compressionContext, 0); // 初始化压缩
```
3. 添加文件到分卷:循环遍历你想压缩的文件,计算每个文件的MD5散列作为目录名,并创建一个新的`ZSTD_frameHeader`结构。接着,将文件数据添加到压缩流。
```objective-c
for (NSString* filePath in filePaths) {
const char* fileName = [filePath cStringUsingEncoding:NSUTF8StringEncoding];
size_t fileDataLength = [fileData length];
unsigned char digest[CC_SHA1_DIGEST_LENGTH];
CC_SHA1([fileName UTF8String], (uint32_t)[fileName lengthOfBytesUsingEncoding:NSUTF8StringEncoding], digest);
NSString* dirName = [[NSString alloc] initWithBytes:digest length:sizeof(digest) encoding:NSUTF8StringEncoding];
NSString* fullDirPath = [volumeLabel stringByAppendingPathComponent:dirName];
ZSTD_frameHeader frameHeader;
frameHeader.sizeContent = fileDataLength;
frameHeader.frameType = ZSTD_frame_content;
frameHeader.crc64 = 0; // 这里需要计算实际内容的CRC,这里仅示例
if (!ZSTD_compressStream(compressionContext, fullDirPath.UTF8String, sizeof(frameHeader), [fileData bytes], fileDataLength)) {
NSLog(@"Error compressing file");
}
}
```
4. 结束并关闭流:完成所有文件的压缩后,发送最终的帧头,然后关闭压缩上下文。
```objective-c
ZSTD_endCompress(compressionContext, &frameHeader.sizeContent); // 更新内容大小
ZSTD_flushStream(compressionContext); // 发送剩余数据
ZSTD_freeCDict(compressionContext->cdict);
ZSTD_freeCCtx(compressionContext);
```
阅读全文
相关推荐














