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


Posted in PHP onJune 29, 2015

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

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

PHP 相关文章推荐
Win2000+Apache+MySql+PHP4+PERL安装使用小结
Oct 09 PHP
很好用的PHP数据库类
May 27 PHP
php 生成饼图 三维饼图
Sep 28 PHP
PHP strtok()函数的优点分析
Mar 02 PHP
PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
Oct 12 PHP
PHP 图片文件上传实现代码
Dec 29 PHP
PHP APC配置文件2套和参数详解
Jun 11 PHP
php通过递归方式复制目录和子目录的方法
Mar 13 PHP
使用PHP接受文件并获得其后缀名的方法
Aug 05 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
Mar 21 PHP
PHP根据session与cookie用户登录状态操作类的代码
May 13 PHP
php访问对象中的成员的实例方法
Nov 17 PHP
基于CakePHP实现的简单博客系统实例
Jun 28 #PHP
Codeigniter的dom类用法实例
Jun 26 #PHP
PHP关联数组实现根据元素值删除元素的方法
Jun 26 #PHP
PHP实现事件机制实例分析
Jun 26 #PHP
php使用MySQL保存session会话的方法
Jun 26 #PHP
Linux操作系统安装LAMP环境
Jun 26 #PHP
PHP中Session可能会引起并发问题
Jun 26 #PHP
You might like
Zend Framework动作控制器用法示例
2016/12/09 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
PHP实现腾讯短网址生成api接口实例
2020/12/08 PHP
【消息提示组件】,兼容IE6/7&amp;&amp;FF2
2007/09/04 Javascript
jquery 插件学习(一)
2012/08/06 Javascript
js将控件隐藏的方法及display属性介绍
2013/07/04 Javascript
js showModalDialog参数的使用详解
2014/01/07 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
JS动态日期时间的获取方法
2015/09/28 Javascript
Javascript闭包与函数柯里化浅析
2016/06/22 Javascript
JS自定义函数对web前端上传的文件进行类型大小判断
2016/10/19 Javascript
详解vue渲染从后台获取的json数据
2017/07/06 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
ReactNative踩坑之配置调试端口的解决方法
2017/07/28 Javascript
input type=file 选择图片并且实现预览效果的实例
2017/10/26 Javascript
VueJs 搭建Axios接口请求工具
2017/11/20 Javascript
老生常谈JS中的继承及实现代码
2018/07/06 Javascript
浅谈开发eslint规则
2018/10/01 Javascript
Vue2.0+Vux搭建一个完整的移动webApp项目的示例
2019/03/19 Javascript
[02:35]DOTA2超级联赛专访XB 难忘一年九冠称王
2013/06/20 DOTA
使用Python制作获取网站目录的图形化程序
2015/05/04 Python
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
Django中modelform组件实例用法总结
2020/02/10 Python
重写django的model下的objects模型管理器方式
2020/05/15 Python
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
自动化专业个人求职信范文
2013/12/30 职场文书
消防安全宣传标语
2014/06/07 职场文书
学校学雷锋活动总结
2014/06/26 职场文书
2014年培训工作总结范文
2014/11/27 职场文书
幼师辞职信怎么写
2015/02/27 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
党章学习心得体会2016
2016/01/14 职场文书
《乌鸦喝水》教学反思
2016/02/19 职场文书
2016年艾滋病宣传活动总结
2016/04/01 职场文书
XX部保密工作制度范本
2019/08/27 职场文书