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 09 PHP
一个颜色轮换的简单例子
Oct 09 PHP
php基础知识:类与对象(2) 自动加载对象
Dec 13 PHP
php 日期时间处理函数小结
Dec 18 PHP
PHP 引用文件技巧
Mar 02 PHP
php中关于普通表单多文件上传的处理方法
Mar 25 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
Sep 23 PHP
详解PHP中的null合并运算符
Dec 30 PHP
Thinkphp和onethink实现微信支付插件
Apr 13 PHP
[原创]php正则删除html代码中class样式属性的方法
May 24 PHP
PHP自动载入类文件函数__autoload的使用方法
Mar 25 PHP
php如何把表单内容提交到数据库
Jul 08 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+DBM的同学录程序(2)
2006/10/09 PHP
php 更新数据库中断的解决方法
2009/06/05 PHP
PHP 数据结构 算法 三元组 Triplet
2011/07/02 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
PHP内核探索之变量
2015/12/22 PHP
PHP+Ajax 检测网络是否正常实例详解
2016/12/16 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
2018/10/14 PHP
JavaScript随机排序(随即出牌)
2010/09/17 Javascript
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
通过jquery还原含有rowspan、colspan的table的实现方法
2012/02/10 Javascript
javascript中offset、client、scroll的属性总结
2015/08/13 Javascript
Highcharts+NodeJS搭建数据可视化平台示例
2017/01/01 NodeJs
使用grunt合并压缩js和css文件的方法
2017/03/02 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
JS中this的指向以及call、apply的作用
2018/05/06 Javascript
JS Math对象与Math方法实例小结
2019/07/05 Javascript
浅谈js数组splice删除某个元素爬坑
2020/10/14 Javascript
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
python实现远程控制电脑
2019/05/23 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
基于Python数据结构之递归与回溯搜索
2020/02/26 Python
Python爬虫获取豆瓣电影并写入excel
2020/07/31 Python
Python3使用 GitLab API 进行批量合并分支
2020/10/15 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
css3遮罩层镂空效果的多种实现方法
2020/05/11 HTML / CSS
来自圣地亚哥的实惠太阳镜:Knockaround
2018/08/27 全球购物
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
普通员工辞职信
2014/01/17 职场文书
安全责任书范文
2014/03/12 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
小学模范班主任事迹材料
2014/05/13 职场文书
电话客服工作职责
2014/07/27 职场文书
2015年保险公司内勤工作总结
2015/05/23 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书
《月歌。》宣布制作10周年纪念剧场版《RABBITS KINGDOM THE MOVIE》
2022/04/02 日漫