有没有能在 NAS / SMB 解压 zip 遇到网络中断能自动重试的

14 天前
 est

一个 100G 的 .zip 。。解压需要很长时间。每次到中途遇到网络中断,bandizip 就玩退出。。。。吐血。。。

只能复制到本地再解压。但是本地只有 256G (的确很傻) 不够放。。。

有啥 zip 遇到错误能自动重试,而不是退出?

2073 次点击
所在节点    Windows
55 条回复
MoYi123
14 天前
@est 这个东西还算简单, 最近我写安卓 TV 的 epub 浏览器里有还有这个
https://github.com/mmooyyii/malguem/blob/master/app/src/main/java/com/github/mmooyyii/malguem/LazyEpub.java
你让 ai 给你写一个就行了.
大致流程是
1. 解析 zip 内部的文件夹,
2. 遍历得到的文件夹, 确定每个文件对应的偏移量.
3. 按内部的压缩算法来解压单个文件, 如果有大文件, 要做断点续传, 因为可以得到 offset, 也比较简单.
Cusmate
14 天前
先 mount 远程文件夹到本地,写个循环脚本用解压工具 cli 解压,命令行带上对于同名文件如果大小一样就跳过,否者覆盖,中途异常退出就重新开始。
est
14 天前
@MoYi123 原理大家都懂,就是想要现成的嘛。。。
@Cusmate 是个办法 。smb 其实就是已经 mount 了。
yanqiyu
14 天前
@mikewang #33 曾经的痛苦,给一台 VPS 改 wireguard 配置,配错了导致隧道断了,但是 systemd 不知道为什么就 D 在了这个 nfs 上面。

systemd 卡住了之后,新的 ssh 连接都进不去,已有的会话也什么都做不了,最后只能跑去 VPS 面板强制重启...
psllll
14 天前
买个移动硬盘吧
yanqiyu
14 天前
@mikewang #25 WG 能保证一些奇怪的 glitch 的时候 TCP 还在,但是上层觉得 timeout 了就没办法了
henix
14 天前
unzip 有个 -u 选项: https://man.archlinux.org/man/unzip.1#u

> update existing files and create new ones if needed.
> extracting (with query) files that are newer than those with the same name on disk, and in addition it extracts those files that do not already exist on disk.

相当于带断点续传的解压

但如果遇到网络报错的时候,有文件写入了一半的话最好把写入了一半的文件删除,然后再重试 unzip -u
kokutou
14 天前
7z 解压不是可以跳过相同的文件吗。。。

是个很大的单个大文件那就不行了
w568w
14 天前
感觉可以用 Python 、C++ 之类的自己写一个,zip 库都是内置的。

至于现成的解决方案,确实没听说过。关于「文件太大不好解压」这个问题,倒是可以用分卷来解决:我之前测试过,分卷之间是独立的,可以解压完一个、删除一个,反复给解压出的文件腾空间。
1423
14 天前
盲猜你的 NAS TCP 拥塞没有用 bbr
可以换 bbr 试试
LoliconInside
14 天前
CIFS 挂载参数加上 hard,timeout=xx ,hard 模式挂载会在网络中断时把文件系统调用阻塞住,然后把 timeout 提高,应该能应付了。
iceheart
13 天前
可能你需要的是 fuse-zip
est
13 天前
@1423
@LoliconInside
@iceheart

不是 bbr 的问题。是 wifi 没了。。 哈哈。。。。。

fuse 能抗 wifi 中断吗。。?
xziar
12 天前
@est 看解压软件逻辑,我记得有些是解压到一半失败的文件自动删除的。
如果是局域网那还是先考虑修一下网络吧,就算是 wifi 也没听说传个 100G 就要中断的,信号差到要中断的话网速早就很慢了,不如直接拿 U 盘什么的中转。
est
12 天前
@xziar 有的时候 wifi 莫名其妙掉线。。然后你复现的时候它又好了。。。

如果是刷网页看视频也无所谓了,解压文件这个本来就很慢,我放在那里不管它。结果回来一看报错退出了。就很爆炸。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/1128330

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX