Linux 시스템 재 귀적 으로 디 렉 터 리 에 있 는 파일 을 만 드 는 md5 방법

2564 단어 md5PHP
링크 ux 에서 md5sum 재 귀 를 사용 하여 전체 디 렉 터 리 를 만 드 는 md5
오늘 md5sum 으로 디 렉 터 리 를 조작 하려 고 합 니 다.디 렉 터 리 에 있 는 모든 파일 의 md5 값 을 재 귀적 으로 생 성 하려 고 합 니 다.그 결과 재 귀적 작업 이 지원 되 지 않 는 다 는 것 을 알 고 phop 스 크 립 트 를 작 성 했 습 니 다.
코드:

  <?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."
", 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."
", FILE_APPEND); } } closedir($files); } }
메모:생 성 된 md5 값 과 파일 사이 에 두 개의 빈 칸 이 있 습 니 다.그렇지 않 으 면 다음 과 같은 오류 가 발생 합 니 다.
   
md5sum: file1.md5: no properly formatted MD5 checksum lines found  
더 쉬 운 것 으로 Liux 의 find 명령 을 사용 하여 한 마디 로 해결 합 니 다.
코드:

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

테스트

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

그림 에서 보 듯 이
201562992931727.png (1135×790)
이렇게 모든 검사 결 과 를 화면 에 출력 합 니 다.마지막 으로 이러한 정 보 를 표시 하면 md5sum:WARNING:2 of 1147 computed checksums did NOT match 는 총 1147 개 중 2 개가 맞지 않 음 을 설명 합 니 다.
그리고 우 리 는 할 수 있다.

  md5sum -c file1.md5 | grep FAILED 

어떤 문서 의 조작 인지 쉽게 알 수 있다.

좋은 웹페이지 즐겨찾기