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
基于OpenCV的PHP图像人脸识别技术
Oct 11 PHP
第四章 php数学运算
Dec 30 PHP
php缓存技术详细总结
Aug 07 PHP
thinkphp中html:list标签传递多个参数实例
Oct 30 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
Nov 06 PHP
php读取flash文件高宽帧数背景颜色的方法
Jan 06 PHP
PHP、Python和Javascript的装饰器模式对比
Feb 03 PHP
利用PHP将部分内容用星号替换
Apr 21 PHP
合格的PHP程序员必备技能
Nov 13 PHP
Ubuntu 16.04下安装PHP 7过程详解
Mar 28 PHP
thinkPHP框架自动填充原理与用法分析
Apr 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 存取 MySQL 数据库的一个例子
2006/10/09 PHP
php 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
php.ini中date.timezone设置分析
2011/07/29 PHP
浅谈PHP强制类型转换,慎用!
2013/06/06 PHP
php使用类继承解决代码重复的问题
2015/02/11 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
2020/04/27 PHP
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
点击文章内容处弹出页面代码
2009/10/01 Javascript
jquery trim() 功能源代码
2011/02/14 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
node.js中的fs.readFile方法使用说明
2014/12/15 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
AngularJS指令详解及示例代码
2016/08/16 Javascript
js 模仿锚点定位的实现方法
2016/11/19 Javascript
概述jQuery的元素筛选
2016/11/23 Javascript
JavaScript表单验证完美代码
2017/03/02 Javascript
利用node.js实现自动生成前端项目组件的方法详解
2017/07/12 Javascript
vue+vue-validator 表单验证功能的实现代码
2017/11/13 Javascript
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
es6数组includes()用法实例分析
2020/04/18 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
python操作mysql数据库
2017/03/05 Python
深入浅析python 协程与go协程的区别
2019/05/09 Python
python 命名规范知识点汇总
2020/02/14 Python
Python如何在DataFrame增加数值
2020/02/14 Python
python标准库OS模块详解
2020/03/10 Python
新手学python应该下哪个版本
2020/06/11 Python
Canvas 文本转粒子效果的实现代码
2019/02/14 HTML / CSS
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
Zipadee-Zip襁褓过渡毯:Sleeping Baby
2018/12/30 全球购物
销售文员岗位职责
2013/11/29 职场文书
中专毕业生个人职业生涯规划
2014/02/19 职场文书
接收函格式
2015/01/30 职场文书
Anaconda配置各版本Pytorch的实现
2021/08/07 Python
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
2022/04/13 Java/Android