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

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  

如图所示

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

  md5sum -c file1.md5 | grep FAILED 

就很容易知道是哪些文件的篡改过

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php
md5
java 递归生成目录树、excel生成目录树实例、递归算法经典实例、java递归算法经典实例、js递归算法经典实例,以便于您获取更多的相关知识。

时间: 2024-09-22 04:55:18

Linux系统递归生成目录中文件的md5的方法_php实例的相关文章

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

  这篇文章主要介绍了Linux系统递归生成目录中文件的md5的方法,利用PHP脚本实现,需要的朋友可以参考下 linux下使用md5sum递归生成整个目录的md5 今天要用md5sum操作目录,递归生成目录下所有文件的md5值,结果发现它不支持递归操作于是写了个php脚本处理下 代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 3

linux系统下php安装mbstring扩展的二种方法_php实例

1.执行 复制代码 代码如下: yum install php-mbstring 2. 修改php.ini (这一步非常重要, 部分lxadmin版本无法自动修改) 复制代码 代码如下: echo 'extension=mbstring.so' >>/etc/php.ini #更具php安装目录而定 3. 重启web service 如果是apache: service httpd restart 方法二:php 5.36安装目录:/usr/local/php  复制代码 代码如下: #cd

Linux系统在多级目录中查找某个文件的方法

Linux系统在多级目录中查找某个文件的方法? 有些时候我们需要查找Linux系统中的某个文件,但该文件可能在Linux系统多级目录中,哪么我们应该如何去查找呢,下面提供三种方法供大家参考: 1 find /dir -http://www.aliyun.com/zixun/aggregation/11696.html">name filename.ext2 du -a | grep filename.ext3 locate filename.ext

解析PHP生成静态html文件的三种方法_php技巧

本文将介绍Php 生成静态html文件的三种方法 .1,下面使用模版的一个方法! 复制代码 代码如下: <?php $fp = fopen ("templets.html","a"); if ($fp){ $fup = fread ($fp,filesize("templets.html")); $fp2 = fopen ("html.shtml","w"); if ($fwrite ($fp2,$f

php遍历替换目录下文件指定内容的方法_php技巧

本文实例讲述了php遍历替换目录下文件指定内容的方法.分享给大家供大家参考,具体如下: 在php中目录访问需要遍历了然后文件需要一个个打开进行访问操作了,下面我们来看一段php 替换目录下文件指定内容,具体如下: /**************************** * 获取目录下的所有文件 * [$dir] 文件夹路径 ****************************/ function deepScanDir($dir) { $fileArr = array (); $dirA

Linux系统编程---实现目录或者文件拷贝

关于拷贝文件,前面写过一个例子:点击打开链接 ,可以看看,实现cp命令. 这次我们实现一个目录和文件的拷贝,综合点. #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include <sys/stat.h> #include <dirent.h> void copy_file(const char *src , const c

使用PHP遍历文件目录与清除目录中文件的实现详解_php技巧

今天无聊中练习了一下PHP遍历文件目录的程序,编写了以下两个程序,不过质量不是很好,轻拍~~~1.清除PHP缓存文件 复制代码 代码如下: <?php  function read_dir($dir,$file)  {      $a =strpos($file,".php");      if($a>0)       {          unlink($dir . $file);          echo "delete $dir$file <br&g

PHP把网页保存为word文件的三种方法_php实例

一.PHP生成word的两种思路或原理 1.利用windows下面的 com组件2.利用PHP将内容写入doc文件之中具体实现方法如下. 二.利用windows下面的com组件 原理:com作为PHP的一个扩展类,安装过office的服务器会自动调用word.application的com,可以自动生成文档,PHP官方文档手册:http://www.php.net/manual/en/class.com.php 使用官方实例: 复制代码 代码如下: <?php// starting word$w

yii使用activeFileField控件实现上传文件与图片的方法_php实例

本文实例讲述了yii使用activeFileField控件实现上传文件与图片的方法.分享给大家供大家参考,具体如下: yii框架提供了activeFileField控件来完成上传文件(当然也包括了上传图片)的操作,下面介绍yii的activeFileField使用方法. 1.函数原型: 复制代码 代码如下: public static string activeFileField(CModel $model, string $attribute, array $htmlOptions=array