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实现用户在线时间统计详解
Oct 08 PHP
Zend的Registry机制的使用说明
May 02 PHP
php警告Creating default object from empty value 问题的解决方法
Apr 02 PHP
2014年最新推荐的10款 PHP 开发框架
Aug 01 PHP
PHP使用递归方式列出当前目录下所有文件的方法
Jun 02 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
Oct 13 PHP
PHP文件上传之多文件上传的实现思路
Jan 27 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
Nov 05 PHP
thinkPHP5.0框架应用请求生命周期分析
Mar 25 PHP
php smtp实现发送邮件功能
Jun 22 PHP
PHP折半(二分)查找算法实例分析
May 12 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
Mar 03 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 数组入门教程小结
2009/05/20 PHP
深入PHP内存相关的功能特性详解
2013/06/08 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
懒就要懒到底——鼠标自动点击(含时间判断)
2007/02/20 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
jQuery仿IOS弹出框插件
2017/02/18 Javascript
Bootstrap Table中的多选框删除功能
2018/07/15 Javascript
JS添加或删除HTML dom元素的方法实例分析
2019/03/05 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
vue实现lodop打印功能的示例
2020/11/11 Javascript
[02:17]《辉夜杯》TRG战队巡礼
2015/10/26 DOTA
使用Flask集成bootstrap的方法
2018/07/24 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
python与字符编码问题
2019/05/24 Python
python中的&amp;&amp;及||的实现示例
2019/08/07 Python
python 实现矩阵填充0的例子
2019/11/29 Python
python模拟哔哩哔哩滑块登入验证的实现
2020/04/24 Python
英国领先的鞋类零售商:Shoe Zone
2018/12/13 全球购物
应届生污水处理求职信
2013/11/06 职场文书
电子商务毕业生求职信
2013/11/10 职场文书
优秀中学生事迹材料
2014/01/31 职场文书
学生生病请假条范文
2014/02/16 职场文书
便利店促销方案
2014/02/20 职场文书
售房协议书范本2014
2014/10/23 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
党支部培养考察意见
2015/06/02 职场文书
关于做家务的心得体会
2016/01/23 职场文书
2019银行竞聘书
2019/06/21 职场文书
小学三年级作文之写景
2019/11/05 职场文书
使用feign服务调用添加Header参数
2021/06/23 Java/Android
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python
apache虚拟主机配置的三种方式(小结)
2022/07/23 Servers