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 相关文章推荐
一个PHP验证码类代码分享(已封装成类)
Jul 17 PHP
PHP 自定义错误处理函数trigger_error()
Mar 26 PHP
PHP5中GD库生成图形验证码(有汉字)
Jul 28 PHP
php微信公众开发之获取周边酒店信息的方法
Dec 22 PHP
php递归函数三种实现方法及如何实现数字累加
Aug 07 PHP
PHP简单实现文本计数器的方法
Apr 28 PHP
详解PHP中websocket的使用方法
Sep 15 PHP
thinkPHP中volist标签用法示例
Dec 06 PHP
详解PHP文件的自动加载(autoloading)
Feb 04 PHP
Yii2框架控制器、路由、Url生成操作示例
May 27 PHP
Laravel 实现数据软删除功能
Aug 21 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
Feb 22 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
从PHP的源码中深入了解stdClass类
2014/04/18 PHP
Parse正式发布开源PHP SDK
2014/08/11 PHP
PHP之uniqid()函数用法
2014/11/03 PHP
PHP 获取ip地址代码汇总
2015/07/05 PHP
laravel学习教程之存取器
2016/07/30 PHP
JavaScript 新手24条实用建议[TUTS+]
2009/06/21 Javascript
一个简单的js动画效果代码
2010/07/20 Javascript
javascript下string.format函数补充
2010/08/24 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
JavaScript操纵窗口的方法小结
2013/06/28 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
2014/07/29 Javascript
JS对象与json字符串格式转换实例
2014/10/28 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
JavaScript数组和循环详解
2015/04/27 Javascript
详细分析JavaScript函数定义
2015/07/16 Javascript
js实现的xml对象转json功能示例
2016/12/24 Javascript
vue实现微信分享朋友圈,发送朋友的示例讲解
2018/02/10 Javascript
vue 使用鼠标滚动加载数据的例子
2019/10/31 Javascript
详解使用mocha对webpack打包的项目进行&quot;冒烟测试&quot;的大致流程
2020/04/27 Javascript
[01:00:53]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Secret
2018/03/30 DOTA
怎样使用Python脚本日志功能
2016/08/14 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
详解python中的Turtle函数库
2018/11/19 Python
python调用staf自动化框架的方法
2018/12/26 Python
使用Python OpenCV为CNN增加图像样本的实现
2019/06/10 Python
python实现简易学生信息管理系统
2020/04/05 Python
Keras中 ImageDataGenerator函数的参数用法
2020/07/03 Python
Asics日本官网:鬼冢八喜郎创立的跑鞋运动品牌
2017/10/18 全球购物
工商管理实习自我鉴定
2013/09/28 职场文书
大学校园活动策划书
2014/02/04 职场文书
建筑工程造价专业自荐信
2014/07/08 职场文书
舌尖上的中国观后感
2015/06/02 职场文书
2015年高中语文教学总结
2015/08/18 职场文书
Java Dubbo框架知识点梳理
2021/06/26 Java/Android
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android
python flappy bird小游戏分步实现流程
2022/02/15 Python