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 相关文章推荐
粗略计算在线时间,bug:ip相同
Dec 09 PHP
php中经典方法实现判断多维数组是否为空
Oct 23 PHP
PHP中使用addslashes函数转义的安全性原理分析
Nov 03 PHP
PHP针对JSON操作实例分析
Jan 12 PHP
PHP生成制作验证码的简单实例
Jun 12 PHP
php flush无效,IIS7下php实时输出的方法
Aug 25 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
Apr 26 PHP
PHP解析url并得到url参数方法总结
Oct 11 PHP
PHP树形结构tree类用法示例
Feb 01 PHP
PHP命名空间与自动加载机制的基础介绍
Aug 25 PHP
php实现的简单多进程服务器类完整示例
Feb 01 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
Mar 29 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
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
2014/06/06 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
node.js平台下的mysql数据库配置及连接
2017/03/31 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
vue发送ajax请求详解
2018/10/09 Javascript
vue 中 beforeRouteEnter 死循环的问题
2019/04/23 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
2019/09/25 Javascript
vue-cli创建的项目中的gitHooks原理解析
2020/02/14 Javascript
[08:04]TI4西雅图DOTA2前线报道 海涛探访各路人马
2014/07/09 DOTA
Python计算回文数的方法
2015/03/11 Python
python文件操作之目录遍历实例分析
2015/05/20 Python
python根据京东商品url获取产品价格
2015/08/09 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
详解python中index()、find()方法
2019/08/29 Python
Django REST框架创建一个简单的Api实例讲解
2019/11/05 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
2019/12/05 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
Python 面向对象部分知识点小结
2020/03/09 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
金宝贝童装官网:Gymboree
2016/08/31 全球购物
夏洛特和乔治婴儿和儿童时装精品店:Charlotte and George
2018/06/06 全球购物
River Island美国官网:英国高街时尚品牌
2018/09/04 全球购物
瑞典最大的儿童用品网上商店:pinkorblue.se
2021/03/09 全球购物
2013英文求职信模板范文
2013/11/15 职场文书
技术人员面试提纲
2013/11/28 职场文书
超市营业员岗位职责
2013/12/20 职场文书
优秀党支部事迹材料
2014/01/14 职场文书
学校学雷锋活动总结
2014/06/26 职场文书
志愿者活动总结报告
2014/06/27 职场文书
个人批评与自我批评
2014/10/15 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
2019年销售人员的职业生涯规划书
2019/03/25 职场文书