Windows平台文件拆分与完整性检查的过程
场景
有时候在没有linux主机的情况下, 自己下载下来的文件比较大.
比较难以上传到一些特殊的系统/主机上面.
这个时候需要将文件进行拆分.
所以可以通过winrar 或者是zip等工具进行打包切分
但是一方面,压缩,解压缩表费时费力.
另外迁移到其他操作系统可能兼容性也存在问题.
所以这个时候想着能够方便快捷的进行文件的拆分与合并.
并且可以无损的迁移到 linux 系统上面.
工具选择
Windows自带的bash
或者是 cygwin等模拟linux的工具.
安装部署说明
我的机器 bash一直存在问题.
适用于 Linux 的 Windows 子系统没有已安装的分发。
使用 'wsl.exe --list --online' 列出可用的分发
并使用 'wsl.exe --install <Distro>' 进行安装。
也可以通过访问 Microsoft Store 安装分发:
https://aka.ms/wslstore
Error code: Bash/Service/CreateInstance/GetDefaultDistro/WSL_E_DEFAULT_DISTRO_NOT_FOUND
不知道是不是windows版本的问题, 比较难搞.
cygwin
网上的安装说明比较多, 不在详细展开, 仅说明一下如何使用.
E:\cygwin64>Cygwin.bat
zhaob@zhao-7192 ~
$ df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
E:/cygwin64 ntfs 932G 714G 219G 77% /
C: ntfs 201G 154G 47G 77% /cygdrive/c
D: ntfs 275G 87G 189G 32% /cygdrive/d
zhaob@zhao-7192 ~
$ cd /cygdrive/d/BaiduNetdiskDownload/
zhaob@zhao-7192 /cygdrive/d/BaiduNetdiskDownload
$ du -ahd 1 |sort -k1hr |tail -n 3
然后可以使用命令 split 进行处理
split命令的说明
split -l 100
split -b 100m
-l 表示是lines, 可以按照行进行切分. 主要是进行 csv或者是文本的切分. 这样能够准确,不会切分坏了.
-b 是大小的含义 100m 指代 每个文件100mb大小. 主要是进行压缩包的处理. 便于切分上传.
split -l 1000 something someprefix
第一个是要切分的文件.
第二个是切分出来文件的前缀.
文件合并
split 拆分的文件 合并非常容易
可以使用 cat someprefix* >somethinginone
就可以将split 切分的文件进行合并了.
文件准确性检查
1. linux 可以使用
for i in `ls` ; do md5sum $i ; done
计算每个文件的md5值.
2. windows 可以使用
certutil -hashfile someprefixaa md5
可以计算文件的md5值
可以看看 windows平台上面的 md5与linux上传后的文件的md5进行对比.
如果有差异可能会失败
需要完全一致, 才能保证文件完全可用.