Php Dizin Kopyalama

Şuanda uğraştığım bir proje için gerekli olan bir fonksiyonu sizlerlede paylaşmak istedim arkadailar fonksiyonun görevi belirttiğimiz dizindeki tüm klasör ve dosyaları belirlediğimiz başka bir dizine aynen kopyalıyor .


Fazla söze gerek yok işte fonksiyon kodları ve kullanımı :

PHP:
  1. <?
  2. function dircopy($srcdir, $dstdir, $offset, $verbose = false) {
  3. if(!isset($offset)) $offset=0;
  4.   $num = 0;
  5.   $fail = 0;
  6.   $sizetotal = 0;
  7.   $fifail = '';
  8.   if(!is_dir($dstdir)) mkdir($dstdir);
  9.   if($curdir = opendir($srcdir)) {
  10.     while($file = readdir($curdir)) {
  11.       if($file != '.' && $file != '..') {
  12.         $srcfile = $srcdir . '\\' . $file;
  13.         $dstfile = $dstdir . '\\' . $file;
  14.         if(is_file($srcfile)) {
  15.           if(is_file($dstfile)) $ow = filemtime($srcfile) - filemtime($dstfile); else $ow = 1;
  16.           if($ow> 0) {
  17.             if($verbose) echo " '$srcfile' Dosyası kopyalandı>  '$dstfile'...";
  18.             if(copy($srcfile, $dstfile)) {
  19.               touch($dstfile, filemtime($srcfile)); $num++;
  20.               $sizetotal = ($sizetotal + filesize($dstfile));
  21.               if($verbose) echo "OK\n";
  22.             }
  23.             else {
  24.                  echo "Hata:  '$srcfile' dosyası kopyalanamadı ! \n";
  25.                  $fail++;
  26.                  $fifail = $fifail.$srcfile."|";
  27.             }
  28.           }                   
  29.         }
  30.         else if(is_dir($srcfile)) {
  31.           $res = explode(",",$ret);
  32.           $ret = dircopy($srcfile, $dstfile, $verbose);
  33.           $mod = explode(",",$ret);
  34.           $imp = array($res[0] + $mod[0],$mod[1] + $res[1],$mod[2] + $res[2],$mod[3].$res[3]);
  35.           $ret = implode(",",$imp);
  36.         }
  37.       }
  38.     }
  39.     closedir($curdir);
  40.   }
  41.   $red = explode(",",$ret);
  42.   $ret = ($num + $red[0]).",".(($fail-$offset) + $red[1]).",".($sizetotal + $red[2]).",".$fifail.$red[3];
  43.   return $ret;
  44. }
  45. function dir_copy($srcdir, $dstdir, $offset = '', $verbose = false)
  46. {
  47.  
  48.     if(!isset($offset)) $offset=0;
  49.     $num = 0;
  50.     $fail = 0;
  51.     $sizetotal = 0;
  52.     $fifail = '';
  53.     if(!is_dir($dstdir)) mkdir($dstdir);
  54.     if($curdir = opendir($srcdir)) {
  55.         while($file = readdir($curdir)) {
  56.             if($file != '.' && $file != '..') {
  57.                 $srcfile = $srcdir . '/' . $file;    # Kopya Dosya
  58.                 $dstfile = $dstdir . '/' . $file;    # Kopyalanacak Yer
  59.                 if(is_file($srcfile)) {
  60.                     if(is_file($dstfile)) $ow = filemtime($srcfile) - filemtime($dstfile); else $ow = 1;
  61.                     if($ow> 0) {
  62.                         if($verbose) echo "'$srcfile' dosyası>  '$dstfile'... olarak kopyalandı . <br />";
  63.                         if(copy($srcfile, $dstfile)) {
  64.                             touch($dstfile, filemtime($srcfile)); $num++;
  65.                             chmod($dstfile, 0777);    # İzin Ayarla
  66.                             $sizetotal = ($sizetotal + filesize($dstfile));
  67.                             if($verbose) echo "OK\n";
  68.                         }
  69.                         else {
  70.                             echo "Hata :  '$srcfile' dosya kopyalanamadı !<br />\n";
  71.                             $fail++;
  72.                             $fifail = $fifail.$srcfile.'|';
  73.                         }
  74.                     }
  75.                 }
  76.                 else if(is_dir($srcfile)) {
  77.                     $res = explode(',',$ret);
  78.                     $ret = dircopy($srcfile, $dstfile, $verbose);
  79.                     $mod = explode(',',$ret);
  80.                     $imp = array($res[0] + $mod[0],$mod[1] + $res[1],$mod[2] + $res[2],$mod[3].$res[3]);
  81.                     $ret = implode(',',$imp);
  82.                 }
  83.             }
  84.         }
  85.         closedir($curdir);
  86.     }
  87.     $red = explode(',',$ret);
  88.     $ret = ($num + $red[0]).','.(($fail-$offset) + $red[1]).','.($sizetotal + $red[2]).','.$fifail.$red[3];
  89.     return $ret;
  90. }
  91. ?>

Kullanımı :

PHP:
  1. dir_copy("KOPYALANACAK_DİZİN","NEREYE_KOPYALANACAK");

62 views

One Comment

  1. [...] öncesinden sizlere şu adresten bir fonksiyon sunmuştum ve php ile klasör içindeki tüm dosyaları belirttiğiniz hedefe [...]

Leave a Reply

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word