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

 更新时间:2015年06月29日 09:38:14   投稿:goldensun  
这篇文章主要介绍了Linux系统递归生成目录中文件的md5的方法,利用PHP脚本实现,需要的朋友可以参考下

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  

如图所示

201562992931727.png (1135×790)

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

  md5sum -c file1.md5 | grep FAILED 

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

相关文章

  • laravel 解决groupBy时出现的错误 isn''t in Group By问题

    laravel 解决groupBy时出现的错误 isn''t in Group By问题

    今天小编就为大家分享一篇laravel 解决groupBy时出现的错误 isn't in Group By问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • CodeIgniter框架数据库事务处理的设计缺陷和解决方案

    CodeIgniter框架数据库事务处理的设计缺陷和解决方案

    这篇文章主要介绍了CodeIgniter框架数据库事务处理的设计缺陷和解决方案,也可以说是一个小BUG,使用CodeIgniter事务的朋友会遇到这个问题,需要的朋友可以参考下
    2014-07-07
  • yii,CI,yaf框架+smarty模板使用方法

    yii,CI,yaf框架+smarty模板使用方法

    这篇文章主要介绍了yii,CI,yaf框架+smarty模板使用方法,结合实例形式介绍了yii,CI及yaf框架整合smaryt模板的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-12-12
  • PHP的curl函数的用法总结

    PHP的curl函数的用法总结

    在本篇文章中小编给大家分享了关于PHP的curl函数的用法总结以及相关知识点内容,需要的读者们学习下。
    2019-02-02
  • 简单的php新闻发布系统教程

    简单的php新闻发布系统教程

    这篇文章主要介绍了如果通过php开发一个简单的php新闻管理系统,这样的系统对php新手来说非常值得学习,先掌握了基础的逻辑与代码能力,才能写出更好的代码
    2014-05-05
  • Laravel5.* 打印出执行的sql语句的方法

    Laravel5.* 打印出执行的sql语句的方法

    本篇文章主要介绍了Laravel5.* 打印出执行的sql语句的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • php 伪静态之IIS篇

    php 伪静态之IIS篇

    上篇文章我们讲解了APACHE服务器下伪静态的实现,不过在国内还是IIS的服务器要多些,特别是个人站长,那么,我们再来学习下IIS下php伪静态的实现过程吧
    2014-06-06
  • TP5框架实现的数据库备份功能示例

    TP5框架实现的数据库备份功能示例

    这篇文章主要介绍了TP5框架实现的数据库备份功能,结合实例形式分析了TP5数据库备份功能相关原理及实现方法,需要的朋友可以参考下
    2020-04-04
  • PHP创建自己的Composer包方法

    PHP创建自己的Composer包方法

    这篇文章主要介绍了PHP创建自己的Composer包方法
    2018-04-04
  • PHP调用C#开发的dll类库方法

    PHP调用C#开发的dll类库方法

    这篇文章主要介绍了PHP调用C#开发的dll类库方法,包含一个完整的详细的DLL制作步骤和PHP调用方法,需要的朋友可以参考下
    2014-07-07

最新评论