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");

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

*
Gereksiz Yorumlari Engellemek icin bu uygulamaya 3 sn katlanmak zorundasiniz .
Buraya Tiklayin

Click to hear an audio file of the anti-spam word