解决网络传输大文件问题的方法之一是将文件分割成指定大小的块进行分批传输。本文将指大家如何使用Linux上的tar工具和split命令来创建存档文件并将其拆分成多个小块,以适应慢速网络环境。
先了解tar和split命令的语法:
tar options archive-name files
split options file "prefix”
如现在要把tar文件拆分成10MB文件,先创建一个存档文件:
tar -cvjf home.tar.bz2 /home/aaronkilik/Documents/*
确认存档文件大小:
ls -lh home.tar.bz2
再使用split实用程序把home.Tar.bx2存档文件分成小块,每部分为10MB:
split -b 10M home.tar.bz2 "home.tar.bz2.part"
ls -lh home.tar.bz2.parta*
上面选项-b用于指定每个块的大小,"home.tar.bz2.part"是分割后创建的每个块文件名称的前缀。
如果是想把ISO映像文件拆分多个部分。先创建Linux Mint ISO文件的存档文件:
tar -cvzf linux-mint-18.tar.gz linuxmint-18-cinnamon-64bit.iso
再把存档文件拆分大小为200MB的小文件:
ls -lh linux-mint-18.tar.gz
split -b 200M linux-mint-18.tar.gz “ISO-archive.part”
ls -lh ISO-archive.parta*
如果是想把大文件拆分成小文件,可以用管道把tar命令输出连接到split:
tar -cvzf - wget/* | split -b 150M - "downloads-part"
确认文件:
ls -lh downloads-parta*
检查分割文件,使用ls命令查看分割后的文件是否已正确创建:
ls -lh archive_name_part_*
以上命令可以列出全部分割文件及大小。
如果是拆分之后想合并tar文件,可以用cat命令实现。Cat命令是执行合并操作最有效、最可靠的方法:
cat home.tar.bz2.parta* >backup.tar.gz.joined
运行以上命令后,会得到之前创建的全部小块都合并到相同大小的原始tar存档文件中。验证tar文件的完整性可以使用-tf选项:
tar -tf archive_name.tar
更可靠的方式是计算原始文件和重新组合后的文件校验和如MD5或SHA256,比较是否一致。计算原始tar文件的MD5校验和:
md5sum original_archive.tar > original_md5.txt
计算重新组合后的tar文件的MD5校验和:
md5sum archive_name.tar > rebuilt_md5.txt
比较两个MD5校验和文件:
diff original_md5.txt rebuilt_md5.txt
如果输出显示内容一致,说明重新组合后的文件和原始文件相同,不存在损坏。
除了MD5外还可以用SHA256或者其他方式来验证文件的完整性:
sha256sum original_archive.tar > original_sha256.txt
sha256sum archive_name.tar > rebuilt_sha256.txt
diff original_sha256.txt rebuilt_sha256.txt
校验和工具一般是在coreutils包中,大部分linux发行版都预装了这包,如果没有原始文件校验和,至少可以比较分割前后tar文件的校验和,对于关键数据建议在分割和组合文件后都进行校验和检查。