Linux系统递归生成目录中文件的md5的方法

这篇文章主要介绍了Linux系统递归生成目录中文件的md5的方法,利用PHP脚本实现,需要的朋友可以参考下

linux下使用md5sum递归生成整个目录的md5

今天要用md5sum操作目录,递归生成目录下所有文件的md5值,结果发现它不支持递归操作于是写了个php脚本处理下

代码:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

<?php

$path ='/data/www/bbs/source';

$outfile = 'file.md5';

get_file_md5($path, $outfile);

function get_file_md5($path, $outfile)

{

$path = rtrim($path, '/');

if(function_exists('scandir'))

{

$files = scandir($path);

foreach($files as $v)

{

if($v != '.' && $v != '..')

{

$file = $path.'/'.$v;

if(is_dir($file))

{

get_file_md5($file, $outfile);

}else

{

file_put_contents($outfile, md5_file($file)." ".$file."/n", FILE_APPEND);

}

}

}

}else

{

$files = opendir($path);

while(($f = readdir($files)) !== false)

{

if($f == '.' || $f == '..')

continue;

$file = $path.'/'.$f;

if(is_dir($file))

{

get_file_md5($file, $outfile);

}else

{

file_put_contents($outfile, md5_file($file)." ".$file."/n", FILE_APPEND);

}

}

closedir($files);

}

}

注意:生成的md5值和文件之间是两个空格,否则导致错误如下

代码如下:

md5sum: file1.md5: no properly formatted MD5 checksum lines found

在来个更简单的,使用linux的find命令一句搞定

代码:

?


1

find /data/www/bbs/source -type f -print0 | xargs -0 md5sum > file2.md5

测试

?


1

2

md5sum -c file1.md5

md5sum -c file2.md5

如图所示



这样把所有检测结果输出到屏幕上来了,如果最后一条显示这样的信息 md5sum: WARNING: 2 of 1147 computed checksums did NOT match 则说明在总共1147条中有2条是不符合的

然后我们可以

?


1

md5sum -c file1.md5 | grep FAILED

就很容易知道是哪些文件的篡改过

(0)

相关推荐