Avatar billede oldnick Nybegynder
12. august 2006 - 17:39 Der er 8 kommentarer og
1 løsning

Kopi af mappe på serveren med alt indhold?

Hvordan laver jeg en kopi af en mappe, med alt indholdet. Indholdet er php filer og måske mapper.

Jeg har fundet denne her kode (http://www.eksperten.dk/spm/495377), det er bare at jeg ikke forstår hvad jeg skal skrive istedet for $kilde = 'c:\\ ... ect

Jeg vil gerne have at mappen skal blive kopieret til en sti på et webhotel. Eks. ../test/$nymappe

<?

    $kilde = 'c:\\html\\test\\images';
    $backupsti = 'c:\\html\\test\\backup\\images-' . date("d-m-Y");
    rmdir( $backupsti );
    mkdir( $backupsti );

    function backupDir($sti)
    {
        global $kilde, $backupsti, $file;
        $dh = opendir( $sti );
        $bckup = $backupsti . '\\' . substr($sti,strlen($kilde));
        if ( !file_exists( $bckup ) )
        {
            mkdir( $bckup );
        }

        while ( $file = readdir( $dh ) )
        {
            echo is_dir($sti.'\\'.$file)." <-> $sti\\$file<br>";
            if (is_dir($sti.'\\'.$file) && $file != '.' && $file != '..')
            {
                backupDir($sti . '\\' . $file);
            }
            elseif (is_file($sti.'\\'.$file) && $file != '.' && $file != '..')
            {
                echo " <-> det er en fil<br>\n";
                $_sti = $sti.'\\'.$file;
                copy($_sti, $bckup.'\\'.$file);
                echo $_sti." -- ".$bckup.'\\'.$file."  <br>\n";
            }
        }
        closedir( $dh );
    }

    backupDir($kilde);

?>

På forhånd tak for hjælpen, I har gjort det før så jeg håber I er lige så hurtige her. :)
Avatar billede jakobdo Ekspert
12. august 2006 - 17:58 #1
Prøv at se her: http://dk2.php.net/copy
SBoisvert at Don'tSpamMe dot Bryxal dot ca
25-Jul-2006 10:38

Der er dirCpy funktion.

Og hvis din funktion allerede virker, så prøv:

$kilde = '/test/dinmappe';
$backupsti = '/test/backup-' . date("d-m-Y");
Avatar billede oldnick Nybegynder
12. august 2006 - 18:03 #2
Tak jeg kigger på det og vender tilbage hvis jeg er helt lost. :)
Avatar billede oldnick Nybegynder
12. august 2006 - 18:07 #3
Og det var jeg så ;)

Hvor i koden kan jeg bestemme hvilket dir der skal kopieres og hvad det nye skal hedde og ligge??

Jeg kunne godt tænkt mig en var som hed:

$nytnavn = 'testmappe';
$kilde = '../test/master';
$destination = '../test/'.$nytnavn.'';

<?php

  // copy a directory and all subdirectories and files (recursive)
  // void dircpy( str 'source directory', str 'destination directory' [, bool 'overwrite existing files'] )
function dircpy($basePath, $source, $dest, $overwrite = false){
  if(!is_dir($basePath . $dest)) //Lets just make sure our new folder is already created. Alright so its not efficient to check each time... bite me
  mkdir($basePath . $dest);
  if($handle = opendir($basePath . $source)){        // if the folder exploration is sucsessful, continue
      while(false !== ($file = readdir($handle))){ // as long as storing the next file to $file is successful, continue
          if($file != '.' && $file != '..'){
              $path = $source . '/' . $file;
              if(is_file($basePath . $path)){
                  if(!is_file($basePath . $dest . '/' . $file) || $overwrite)
                  if(!@copy($basePath . $path, $basePath . $dest . '/' . $file)){
                      echo '<font color="red">File ('.$path.') could not be copied, likely a permissions problem.</font>';
                  }
              } elseif(is_dir($basePath . $path)){
                  if(!is_dir($basePath . $dest . '/' . $file))
                  mkdir($basePath . $dest . '/' . $file); // make subdirectory before subdirectory is copied
                  dircpy($basePath, $path, $dest . '/' . $file, $overwrite); //recurse!
              }
          }
      }
      closedir($handle);
  }
}

?>
Avatar billede jakobdo Ekspert
12. august 2006 - 18:25 #4
Se her:
function dircpy($basePath, $source, $dest, $overwrite = false)
$basePath = '/test/';
$source = Hvilken mappe skal vi kopiere?
$dest = Hvor skal vi kopiere til?
$overwrite = Skal vi overskrive hvis filen/mappen allerede findes? (true = ja, false = nej)
Avatar billede oldnick Nybegynder
12. august 2006 - 19:44 #5
Tak, det vil jeg teste..
Avatar billede oldnick Nybegynder
13. august 2006 - 03:10 #6
Nu spørger jeg sikkert dumt.
$basePath = '/test/'; //Hvad der det??
Avatar billede oldnick Nybegynder
13. august 2006 - 10:08 #7
Lige meget jeg har fået det til at virke, smid et svar så skal du få point, hvis du vil ha' dem..:)
Avatar billede jakobdo Ekspert
13. august 2006 - 10:30 #8
Svar!
Avatar billede jakobdo Ekspert
13. august 2006 - 10:56 #9
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester