Linux命令备忘实例(8)——文件校验、分割与临时文件

1.md5sum、sha1sum

文件特别是网络传输的文件,出于各种原因,数据可能在传输中丢失bit位从而导致文件损坏。为了保证数据完整和正确,需要使用特定工具进行完整性测试和校验。校验和就是用来从文件中生成校验和密钥,利用这个校验和密钥核实文件。最广泛使用的就是md5sum和sha1sum两种校验和技术。

1.概览

这里写图片描述
使用时,需要将生成的校验和结果保存到文件中。然后使用-c选项进行校验。默认为文本模式,-b可以更改为二进制模式。

2.特性实例

user@ubuntu:~$ md5sum testfile1,testfile2 | tee -a check
54468c4fbe75b5d4ade261ac1f1cde2d testfile1
189e725f4587b679740f0f7783745056 testfile2

校验时使用-c选项即可:

user@ubuntu:~$ md5sum -c check
testfile1: OK
testfile2: OK

3.拓展

对有多个文件的目录一样可以使用,需要以递归的方式对目录中所有文件进行遍历。
- 使用相对应的md5deep和sha1deep命令来实现。这个需要事先安装这两个程序
- 使用find进行递归计算
第一种很直接,第二种方式就是用find找出所有文件后使用md5sum计算后追加到检验文件中,最后用-c选项检验。

user@ubuntu:~$ find path -type f -print0 | xargs -0 md5sum >> check.md5
user@ubuntu:~$ md5sum -c check.md5

2.split

在某些情况下,需要将文件分割为更小的片段,比如对于长度太长的日志文件进行分割,方便阅读等,对于大小过大的文件进行分割后方便存储和携带等。

1.概览

这里写图片描述
指定分割方式后进行分割即可。其中,SIZE参数是一个整数,可以指定单位,用来指定每个文件块的大小:K/M/G/T/P/E/Z/Y(以1024为进制的单位),KB/MB/GB/TB/PB/EB/ZB/YB(以1000为进制的单位)。
另一个CHUNK参数是指定输出文件的个数:
这里写图片描述

2.特性实例

user@ubuntu:~$ split -b 100K /tmp/test/var.111 var-chunk-
user@ubuntu:~$ ll /tmp/test
-rw-r--r-- 1 user user 100 xxxxx var-chunk-aa
-rw-r--r-- 1 user user 100 xxxxx var-chunk-ab
-rw-r--r-- 1 user user 40 xxxxx var-chunk-ac

-a length选项可以指定后缀的长度。-d选项可以使得后缀为数字。

user@ubuntu:~$ split -b 100K -d -a 3 /tmp/test/var.111 var-chunk-
user@ubuntu:~$ ll /tmp/test
-rw-r--r-- 1 user user 100 xxxxx var-chunk-001
-rw-r--r-- 1 user user 100 xxxxx var-chunk-002
-rw-r--r-- 1 user user 40 xxxxx var-chunk-003

另外可以实用-l选项来按照文件行数来进行分割,这对于代码文件的分割非常有用。

3.tempfile

编写shell脚本时经常会用到临时暂存的文件,在使用结束后删除。这样的文件最适合的位置就是/tmp目录下,这个目录下的内容在系统重启时会被清空。
在基于Debian的发布版中有tempfile这个命令用来生成标准临时数据文件名。

user@ubuntu:~$ tmpfile=$(tempfile); echo $tmpfile
/tmp/fileTIUy3r

另外可以追加一个随机数来防止重名现象,使用环境变量$RANDOM(总是返回一个随机数):

user@ubuntu:~$ tmpfile=$(tempfile)'-'$RANDOM; echo $tmpfile
/tmp/fileZIL0EY-13008

在没有tempfile命令情况下,可以使用如下方式命名:

user@ubuntu:~$ tmpfile="/tmp/var.$$"; echo $tmpfile
/tmp/var.2598
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值