2.
@无名啊,我明白了,第一个压缩包中里面只有一个inner.rar压缩包所以要提取inner.rar中的文件只能整个解压inner.rar这个文件。
还有你干嘛那么心疼你的固态现在固态那么便宜,固态的售后不是按照质保期和twb那个先到按那个吗?你要是单纯为了减少固态硬盘的写入,那建议你买一块机械硬盘或者micro sd储存卡(终身固保)。
3.
@都是假的,网上下的,我也没辙。。有些人还用几GB字典去压 inner.rar
呢。。(压不动,解压时还要再吃我几GB内存。。)
@上善若水,写入大小是 inner.rar
和里面的文件。我不需要中间文件 inner.rar
笔电的固态,换起来估计会麻烦(预装的分区有没有笔电自己的东西,我也不清楚)
所以能延长点寿命,就尽量延长下了
5.
@上善若水,那肯定没问题。
但还是先来请教请教,看有没有减少写入损耗的方法。
比如,如果是 inner.zip
的话,使用支持流式读取 zip
的工具(如 bsdtar
和 busybox
里的 tar
),稍稍动动手写一行代码(7z ... | bsdtar ...
),就能避免巨大的写入损耗,说实在是有点爽的事情。。
6.
@无名啊,Linux的unrar
也可以流式调用:
sudo apt install p7zip unrar
7z e -so test.7z.001 inner.rar | unrar x -si -o"+" .
-so 解压到标准输出
-si 从标准输入读取压缩包
-o"+" 解压时覆盖所有已存在文件(没有该选项,文件重名时会退出)
7.
@老虎会游泳,有效!
奇怪的是,我在 WinRAR
的帮助手册上,找不到这个命令行选项
8.
@无名啊,据我所知Windows的标准输入和标准输出不是二进制安全的,可能无法用于文件传输。只有Linux可以。
9.
@老虎会游泳,不会吧?msys2
上的命令行工具,我用的没啥问题呀
10.
层主
@老虎会游泳 于 2023-02-02 13:33 删除了该楼层。
11.
@无名啊,看起来有方法把标准输入和标准输出设置为二进制模式。
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
)。
12.
@无名啊,哦对了,unrar
有两个版本,在Linux环境里安装的通常是GNU版本,可能和WinRAR附带的那个不一样。