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 

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

相关文章

  • 在WordPress的文章编辑器中设置默认内容的方法

    在WordPress的文章编辑器中设置默认内容的方法

    这篇文章主要介绍了在WordPress的文章编辑器中设置默认内容的方法,包括给不同类型的文章设置不同内容的具体方法,需要的朋友可以参考下
    2015-12-12
  • PHP与Ajax相结合实现登录验证小Demo

    PHP与Ajax相结合实现登录验证小Demo

    AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。接下来通过本文给大家分享PHP与Ajax相结合实现登录验证小Demo,对php ajax实现登录验证相关知识感兴趣的朋友一起学习吧
    2016-03-03
  • Laravel5.1 框架模型一对一关系实现与使用方法实例分析

    Laravel5.1 框架模型一对一关系实现与使用方法实例分析

    这篇文章主要介绍了Laravel5.1 框架模型一对一关系实现与使用方法,结合实例形式分析了laravel5.1框架模型一对一关系的原理、定义与使用方法,需要的朋友可以参考下
    2020-01-01
  • 详解PHP发送邮件知识点

    详解PHP发送邮件知识点

    本片文章我们给大家总结了PHP中发送邮件的相关知识点以及详细用法代码,有需要的朋友学习下吧。
    2018-05-05
  • 深入分析php之面向对象

    深入分析php之面向对象

    本篇文章是对php中的面向对象进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • YII2框架中excel表格导出的方法详解

    YII2框架中excel表格导出的方法详解

    最近在研究PHP的Yii框架,很喜欢,碰到导出Excel的问题,研究了一下,就有了下面这篇文章,这篇文章主要给大家介绍了关于YII2框架中excel表格导出的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-07-07
  • WordPress免插件实现面包屑导航的示例代码

    WordPress免插件实现面包屑导航的示例代码

    这篇文章主要介绍了WordPress免插件实现面包屑导航,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题

    解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题

    今天小编就为大家分享一篇解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • Thinkphp中Create方法深入探究

    Thinkphp中Create方法深入探究

    由于工作原因在thinkPHP的create()方法上遇到了问题,所以跟踪了create(),从而进一步探究了create()方法。 原来create()方法原来有两个参数,本文就此作简要说明,需要的朋友可以参考下
    2014-06-06
  • php操作xml并将其插入数据库的实现方法

    php操作xml并将其插入数据库的实现方法

    下面小编就为大家带来一篇php操作xml并将其插入数据库的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09

最新评论