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

来源:互联网 发布:翻译视频的软件 编辑:程序博客网 时间:2024/05/17 04:43

1.md5sum、sha1sum

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

1.概览

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

2.特性实例

user@ubuntu:~$ md5sum testfile1,testfile2 | tee -a check54468c4fbe75b5d4ade261ac1f1cde2d testfile1189e725f4587b679740f0f7783745056 testfile2

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

user@ubuntu:~$ md5sum -c checktestfile1: OKtestfile2: OK

3.拓展

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

user@ubuntu:~$ find path -type f -print0 | xargs -0 md5sum >> check.md5user@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
0 0
原创粉丝点击