加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Linux系统递归生成目录中文件的md5的方法

发布时间:2020-12-13 02:42:39 所属栏目:PHP教程 来源:网络整理
导读:《PHP实战:Linux系统递归生成目录中文件的md5的方法》要点: 本文介绍了PHP实战:Linux系统递归生成目录中文件的md5的方法,希望对您有用。如果有疑问,可以联系我们。 linux下使用md5sum递归生成整个目录的md5 本日要用md5sum操作目录,递归生成目录下所有

《PHP实战:Linux系统递归生成目录中文件的md5的方法》要点:
本文介绍了PHP实战:Linux系统递归生成目录中文件的md5的方法,希望对您有用。如果有疑问,可以联系我们。

linux下使用md5sum递归生成整个目录的md5
本日要用md5sum操作目录,递归生成目录下所有文件的md5值,结果发现它不支持递归操作于是写了个php脚本处理下
代码: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,FILE_APPEND);  
        }  
      }  
      closedir($files);  
    }  
  } 

注意:生成的md5值和文件之间是两个空格,不然导致错误如下PHP教程

??? PHP教程

代码如下:
md5sum: file1.md5: no properly formatted MD5 checksum lines found?

在来个更简单的,使用linux的find命令一句搞定
代码:PHP教程

  find /data/www/bbs/source -type f -print0 | xargs -0 md5sum > file2.md5 

测试PHP教程

  md5sum -c file1.md5 
  md5sum -c file2.md5  

如图所示
PHP教程

PHP教程

这样把所有检测结果输出到屏幕上来了,如果最后一条显示这样的信息 md5sum: WARNING: 2 of 1147 computed checksums did NOT match 则阐明在总共1147条中有2条是不符合的
然后我们可以PHP教程

  md5sum -c file1.md5 | grep FAILED 

就很容易知道是哪些文件的窜改过PHP教程

欢迎参与《PHP实战:Linux系统递归生成目录中文件的md5的方法》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读