16亿个二进制文件如何打包成一个文件?
有16亿个二进制文件,每个文件1-64KB大小不等,总大小1.98TB。为了便于传输和使用,现需要压缩或打包成一个文件,然后在其他机器上解压使用,目前使用winrar,7zip,bandizip等压缩软件,均以资源耗尽,压缩失败告终。特此请教大家,有没有比较好的办法?电脑配置:AMD 5950X 内存:128GB 硬盘:4T+8T SSD 操作系统:Windows10 存储时候设置成“仅存储”是否可行?就是不压缩,只打包?嫌文件大的,可以设置分卷。 本帖最后由 linjun942 于 2023-7-17 14:10 编辑
试一下winrar ,勾选固实,对零碎小文件可能有高压缩比,winrar也有分卷功能(就是分成多个小文件),1.98TB过大(如果是造成系统资源耗尽的原因)你可以分成几个部分分别打包压缩 试过tar打包吗 建一个分区用windows的文件压缩功能,然后整个分区转储过去 tar试试 伦风凝星 发表于 2023-7-17 14:05
存储时候设置成“仅存储”是否可行?就是不压缩,只打包?嫌文件大的,可以设置分卷。 ...
设置仅存储模式了,还是提示压缩失败 多半是缓存(内存)不够了
试试 7z a target.zip dir1\
每次往一个target里面塞100g,循环18次 用备份软件试试呢,傲梅轻松备份这种的 分卷压缩呢 估计得分卷压缩 mqwxp 发表于 2023-7-17 14:08
建一个分区用windows的文件压缩功能,然后整个分区转储过去
需要在linux服务器上使用 RyanLR 发表于 2023-7-17 14:11
多半是缓存(内存)不够了
试试 7z a target.zip dir1\
每次往一个target里面塞100g,循环18次 ...
我试试,之前压缩的时候内存占用100% 大头吃小头 发表于 2023-7-17 14:33
估计得分卷压缩
压缩文件太大了,可能不是分卷的问题 PPXG 发表于 2023-7-17 14:26
分卷压缩呢
之前试过了,还是失败 做成iso镜像文件
liuxs认不认iso镜像,我就不清楚了 或者买块硬盘,复制好,邮寄过去
毕竟这么大的文件,你通过什么方式去上传 做一个vhd,格式化成ntfs然后挂载,启用压缩。小文件都考到这个里面,因为vhd可以是动态增长的,而且启用了压缩,所以最终大小视文件内容而定应该会小于1.98t。linux挂载vhd网上教程很多。 pheyx 发表于 2023-7-17 14:44
做一个vhd,格式化成ntfs然后挂载,启用压缩。小文件都考到这个里面,因为vhd可以是动态增长的,而且启用了 ...
确实虚拟机文件也可以 这种情况还是建议直接买个3T或者更大的移动硬盘了,毕竟就算是你这里压缩了,到用的时候解压也是一件麻烦事儿 每个分卷2GB,我就不信会失败。。 xc11748 发表于 2023-7-17 14:34
需要在linux服务器上使用
这个就简单了,在linux上挂载windows分区,然后dd保存分区到文件,然后xz压缩 [震惊]这么多的文件为啥非要打包成一个文件?方便传输这理由可不太对,文件太大了传输哪出点错那可不完蛋?还有文件太大解压也是个问题.我觉得正确做法是打包成适量大小,然后多个... 会写代码直接弄个列存存储就可以了,这点数据小意思 新建一个分区,全部复制过去,然后用ghost镜像压缩。
这属于老方法了,可能现在有更新的镜像压缩工具,但个人还是更习惯ghost。 xc11748 发表于 2023-7-17 14:37
之前试过了,还是失败
要不你直接克隆硬盘镜像吧。。。。 本帖最后由 ysc3839 于 2023-7-17 15:44 编辑
先说清楚怎么个耗尽?怎么个失败?
试过Win10自带的命令行tar了吗? ysc3839 发表于 2023-7-17 15:43
先说清楚怎么个耗尽?怎么个失败?
试过Win10自带的命令行tar了吗?
用bandizip最后提示资源耗尽,把内存和系统盘设置的缓存压榨尽了,一滴不剩。用7zip压缩了一天多,最后提示压缩失败。 wxlg1117 发表于 2023-7-17 15:28
这么多的文件为啥非要打包成一个文件?方便传输这理由可不太对,文件太大了传输哪出点错那可不完蛋?还有文件 ...
16亿个文件如果不压缩,传输太慢了,瓶颈在磁盘I/O 楼主的需求应该是将这1.98T的诸多文件,拷贝到另一台linux服务器上使用,
一个一个文件的拷贝数量巨大的小文件,速度很慢所以才想打包的,
但打包的时候,一个一个文件进行读取时的操作,不管拷贝也好,压缩也好,是必须都省不了的,
打包后再传输的效率也提高不了太多。而且打包成一个文件后,到对方那儿解压缩也是个问题,
不需要太多技术含量的方法,可以弄个新硬盘挂到机器上,将所有的文件拷贝过去,再挂载到Linux服务器上,省下再拷贝一次了。