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实现像JSP,ASP里Application那样的全局变量
Jan 12 PHP
由php if 想到的些问题
Mar 22 PHP
PHP 程序员应该使用的10个组件
Oct 31 PHP
PHP 查找字符串常用函数介绍
Jun 07 PHP
codeigniter框架批量插入数据
Jan 09 PHP
PHP中ini_set和ini_get函数的用法小结
Feb 18 PHP
php判断是否为json格式的方法
Mar 04 PHP
php中出现空白页的原因及解决方法汇总
Jul 08 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
Dec 14 PHP
PHP判断表达式中括号是否匹配的简单实例
Oct 22 PHP
Thinkphp3.2实用篇之计算型验证码示例
Feb 09 PHP
php实现自定义中奖项数和概率的抽奖函数示例
May 26 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 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
php实现在服务器端调整图片大小的方法
2015/06/16 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
2017/12/14 PHP
Js callBack 返回前一页的js方法
2008/11/30 Javascript
Javascript实现的鼠标经过时播放声音
2010/05/18 Javascript
js+xml生成级联下拉框代码
2012/07/24 Javascript
jQuery实现点击标题输入详细信息
2013/04/16 Javascript
JS写的贪吃蛇游戏(个人练习)
2013/07/08 Javascript
简单方法判断JavaScript对象为null或者属性为空
2014/09/26 Javascript
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
js中flexible.js实现淘宝弹性布局方案
2020/06/23 Javascript
Javascript同时声明一连串(多个)变量的方法
2017/01/23 Javascript
jQuery模拟淘宝购物车功能
2017/02/27 Javascript
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
vue-router history模式下的微信分享小结
2018/07/05 Javascript
Node.js的进程管理的深入理解
2019/01/09 Javascript
[00:53]2015国际邀请赛 中国区预选赛一触即发
2015/05/14 DOTA
[01:07:21]NAVI vs VG Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
python中字符串比较使用is、==和cmp()总结
2018/03/18 Python
python实现二维插值的三维显示
2018/12/17 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
python滑块验证码的破解实现
2019/11/10 Python
使用Python实现Wake On Lan远程开机功能
2020/01/22 Python
什么是Python包的循环导入
2020/09/08 Python
html5手机端页面可以向右滑动导致样式受影响的问题
2018/06/20 HTML / CSS
蒂芙尼澳大利亚官方网站:Tiffany&Co. Australia
2017/08/27 全球购物
在家更换处方镜片:Lensabl
2019/05/01 全球购物
画展邀请函
2015/01/31 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
欠条范文
2015/07/03 职场文书
辅导员学期工作总结
2015/08/14 职场文书
诚信高考倡议书
2019/06/24 职场文书
java开发双人五子棋游戏
2022/05/06 Java/Android
Win10开机修复磁盘错误怎么跳过?Win10关闭开机磁盘检查的方法
2022/09/23 数码科技