Copiar diretórios inteiros com PHP

Nesse artigo criaremos uma função em PHP que copia diretórios inteiros, e se o diretório não existir, é criado.

Nesse artigo criaremos uma função em PHP que copia diretórios inteiros, e se o diretório não existir, é criado.

A função copiar_diretorio possui três parametros: $diretorio, o nome do diretório a ser copiado, $destino, o nome do diretório de destino e $ver_acao, que exibe cada ação da execução.

<?php function copiar_diretorio($diretorio, $destino, $ver_acao = false){ if ($destino{strlen($destino) - 1} == '/'){ $destino = substr($destino, 0, -1); } if (!is_dir($destino)){ if ($ver_acao){ echo "Criando diretorio {$destino}\n"; } mkdir($destino, 0755); } $folder = opendir($diretorio); while ($item = readdir($folder)){ if ($item == '.' || $item == '..'){ continue; } if (is_dir("{$diretorio}/{$item}")){ copy_dir("{$diretorio}/{$item}", "{$destino}/{$item}", $ver_acao); }else{ if ($ver_acao){ echo "Copiando {$item} para {$destino}"."\n"; } copy("{$diretorio}/{$item}", "{$destino}/{$item}"); } } } ?>

Exemplos de Uso

Crie um diretório chamado "diretorio1" e dentro dele coloque alguns arquivos (foto, textos, etc). Como exemplo eu coloquei os seguintes arquivos: "imagem.jpg", "documento word.docx" e "documento excel.xlsx". Com o código a seguir vamos duplicar esta pasta e a nova pasta ficara com o nome "diretorio2":

<?php copiar_diretorio('./diretorio1', './diretorio2/'); // copia o diretório inteiro ?>

Agora copiaremos o conteudo da pasta "diretorio1" para o diretório de execução:

<?php copiar_diretorio('./diretorio1', './'); // copia os arquivos do diretório para o diretório de execução ?>

O terceiro parâmetro ($ver_acao) exibe cada ação da execução e podemos ver em funcionamente passando como "true":

<?php copiar_diretorio('./diretorio1', './diretorio2/', true); // Exibe as seguintes mensagens: // Criando diretorio ./diretorio2 // Copiando documento excel.xlsx para ./diretorio2 // Copiando documento word.docx para ./diretorio2 // Copiando imagem.jpg para ./diretorio2 ?>
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados