有 25 个 4GB 的 outer.7z.001 ~ outer.7z.025,里面有个 inner.rar,再里面则是需要的文件。
outer.7z.001
outer.7z.025
inner.rar
全部解压,需要写 200 GB 的固态。
除了买 128 GB 内存条外,有没有可以少写一点固态的解压办法?
比如,有没有能挂载 .7z .rar 文件啥的?
.7z
.rar
@都是假的,网上下的,我也没辙。。有些人还用几GB字典去压 inner.rar 呢。。(压不动,解压时还要再吃我几GB内存。。)
@上善若水,写入大小是 inner.rar 和里面的文件。我不需要中间文件 inner.rar
笔电的固态,换起来估计会麻烦(预装的分区有没有笔电自己的东西,我也不清楚)
所以能延长点寿命,就尽量延长下了
@上善若水,那肯定没问题。
但还是先来请教请教,看有没有减少写入损耗的方法。
比如,如果是 inner.zip 的话,使用支持流式读取 zip 的工具(如 bsdtar 和 busybox 里的 tar),稍稍动动手写一行代码(7z ... | bsdtar ...),就能避免巨大的写入损耗,说实在是有点爽的事情。。
inner.zip
zip
bsdtar
busybox
tar
7z ... | bsdtar ...
@无名啊,Linux的unrar也可以流式调用:
unrar
sudo apt install p7zip unrar 7z e -so test.7z.001 inner.rar | unrar x -si -o"+" .
-so 解压到标准输出 -si 从标准输入读取压缩包 -o"+" 解压时覆盖所有已存在文件(没有该选项,文件重名时会退出)
@老虎会游泳,有效!
奇怪的是,我在 WinRAR 的帮助手册上,找不到这个命令行选项
WinRAR
@无名啊,据我所知Windows的标准输入和标准输出不是二进制安全的,可能无法用于文件传输。只有Linux可以。
@老虎会游泳,不会吧?msys2 上的命令行工具,我用的没啥问题呀
msys2
@无名啊,看起来有方法把标准输入和标准输出设置为二进制模式。
https://learn.microsoft.com/zh-cn/cpp/c-runtime-library/reference/setmode?view=msvc-170#example-use-_setmode-to-change-stdin
_setmode( _fileno( stdin ), _O_BINARY );
不过Win32控制台依然是特殊的,因为Win32窗口程序默认没有标准输入和标准输出,而启动Win32控制台程序则总会一并启动一个控制台宿主进程(conhost.exe)并显示黑窗口。所以Windows中的窗口程序和控制台程序往往是两个不同的二进制,就算功能相同(比如java.exe和javaw.exe)。
conhost.exe
java.exe
javaw.exe
@无名啊,哦对了,unrar有两个版本,在Linux环境里安装的通常是GNU版本,可能和WinRAR附带的那个不一样。
还有你干嘛那么心疼你的固态现在固态那么便宜,固态的售后不是按照质保期和twb那个先到按那个吗?你要是单纯为了减少固态硬盘的写入,那建议你买一块机械硬盘或者micro sd储存卡(终身固保)。