45fan.com - 路饭网

搜索: 您的位置主页 > 电脑频道 > 编程代码 > 阅读资讯:Linux系统递归生成目录中文件的md5的操作教程

Linux系统递归生成目录中文件的md5的操作教程

2015-07-23 04:19:47 来源:www.45fan.com 【

Linux系统递归生成目录中文件的md5的操作教程

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

 <?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命令一句搞定
代码:

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

测试

 md5sum -c file1.md5 
 md5sum -c file2.md5 

如图所示

Linux系统递归生成目录中文件的md5的操作教程

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

 md5sum -c file1.md5 | grep FAILED 

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


本文地址:http://www.45fan.com/bcdm/15366.html
Tags: linux 系统 递归
编辑:路饭网
推广内容
推荐阅读
热门推荐
推荐文章
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部