Foros del Web » Programando para Internet » PHP »

script php para copiar carpeta (no funka)

Estas en el tema de script php para copiar carpeta (no funka) en el foro de PHP en Foros del Web. Saludos, estoy intentando crear una utilidad que automatice el respaldo de una carpeta en el servidor. Para eso pretendo usar cronjob y un script php ...
  #1 (permalink)  
Antiguo 06/07/2011, 20:20
Avatar de ricardo_tu  
Fecha de Ingreso: noviembre-2010
Ubicación: Mas aca del mas alla
Mensajes: 222
Antigüedad: 14 años
Puntos: 32
Exclamación script php para copiar carpeta (no funka)

Saludos, estoy intentando crear una utilidad que automatice el respaldo de una carpeta en el servidor.
Para eso pretendo usar cronjob y un script php para copiar la carpeta mencionada, pero no logro descubrir porque no funciona el script.

Código PHP:
$origen ="/home/xxxxxxx/public_html/carpeta";
$destino ="/home/xxxxxxxx/public_html/carpeta1";
function 
copiaDirectorio($origen,$destino){

$dir opendir($origen);

mkdir("$destino");
chmod("$destino",  0777);

while(
false !== ( $archivo =  readdir($dir)) ) {

if (( 
$archivo  != '.' ) && ( $archivo != '..' )) {

if (  
is_dir('$origen/$archivo') ) {

copiaDirectorio('$origen/$archivo','$destino/$archivo');

}

else {
copy('$origen/$archivo','$destino/$archivo');
  }
}
}

closedir($dir);

Sin embargo algo o más de algo no anda bien y no descubro que es ya que ni siquiera muestra un Warning ni errores ni nada, tampoco crea el directorio ni copia archivos... o sea, no hace nada de nada.

Espero que alguien tenga la voluntad de revisar el script y darme alguna idea de lo que esta mal en él.
__________________
La ciencia al poder. Pazciencia ya viene
  #2 (permalink)  
Antiguo 06/07/2011, 21:24
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: script php para copiar carpeta (no funka)

verifica que la carpeta de destino tenga permisos de escritura
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 07/07/2011, 08:41
Avatar de ricardo_tu  
Fecha de Ingreso: noviembre-2010
Ubicación: Mas aca del mas alla
Mensajes: 222
Antigüedad: 14 años
Puntos: 32
Respuesta: script php para copiar carpeta (no funka)

Gracias por el aporte, la carpeta de destino se crea con permisos 777 para asegurar que en ella se pueda pegar la carpeta de origen.
__________________
La ciencia al poder. Pazciencia ya viene
  #4 (permalink)  
Antiguo 07/07/2011, 10:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: script php para copiar carpeta (no funka)

El problema es que las comillas simples no interpretan las variables dentro, tienes que usar comillas dobles:
Código PHP:
Ver original
  1. '$var'; // mal
  2. "$var"; // bien

Saludos.
  #5 (permalink)  
Antiguo 09/07/2011, 15:09
Avatar de ricardo_tu  
Fecha de Ingreso: noviembre-2010
Ubicación: Mas aca del mas alla
Mensajes: 222
Antigüedad: 14 años
Puntos: 32
Respuesta: script php para copiar carpeta (no funka)

Vuelvo a saludar y comentarles que he intentado casi todo para lograr copiar una carpeta y sus subdirectorios y archivos a otra carpeta del servidor pero aun no logro nada.
Deseché el script anterior ya que no logré ningún resultado y con este creo que voy donde mismo... Pido su colaboración, desde ya gracias.
Código PHP:


function copiar($origen$destino


// Copia de archivos 
    
if (is_file($origen)) { 
        return 
copy($origen$destino); 
    } 
  
    
// Comprueba el destino
    
if (!is_dir($destino)) { //chequea que el dir existe
        
mkdir($destino); // y si no existe lo crea (pero no lo hace)
      
chmod("$destino",  0777); //asigno permisos
    

  
    
// Funcion recursiva para copiar subdirectorios y archivos
    
$dir dir($origen); 
    while (
false !== $abc $dir->read()) { 
        
        if (
$abc == '.' || $abc == '..') { 
            continue; 
        } 
  
        
// Copia de subdirectorios
        
if ($dest !== "$origen/$abc") { 
            
copiar("$origen/$abc""$destino/$abc"); 
        } 
    } 
  
    
// Cierra
    
$dir->close(); 
    return 
true

__________________
La ciencia al poder. Pazciencia ya viene

Última edición por ricardo_tu; 09/07/2011 a las 16:02
  #6 (permalink)  
Antiguo 09/07/2011, 17:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: script php para copiar carpeta (no funka)

En el manual viene un ejemplo sencillo, lo haz intentado?
Código PHP:
Ver original
  1. function rcopy($src, $dst) {
  2.   if (file_exists($dst)) rrmdir($dst);
  3.   if (is_dir($src)) {
  4.     mkdir($dst);
  5.     $files = scandir($src);
  6.     foreach ($files as $file)
  7.     if ($file != "." && $file != "..") rcopy("$src/$file", "$dst/$file");
  8.   }
  9.   else if (file_exists($src)) copy($src, $dst);
  10. }
  #7 (permalink)  
Antiguo 09/07/2011, 18:59
Avatar de ricardo_tu  
Fecha de Ingreso: noviembre-2010
Ubicación: Mas aca del mas alla
Mensajes: 222
Antigüedad: 14 años
Puntos: 32
Respuesta: script php para copiar carpeta (no funka)

Muchas gracias GatorV, lo ensayaré y te comento. Una vez mas gracias por tu tiempo y voluntad.
__________________
La ciencia al poder. Pazciencia ya viene
  #8 (permalink)  
Antiguo 09/07/2011, 20:08
Avatar de ricardo_tu  
Fecha de Ingreso: noviembre-2010
Ubicación: Mas aca del mas alla
Mensajes: 222
Antigüedad: 14 años
Puntos: 32
Respuesta: script php para copiar carpeta (no funka)

Tomé el código tal cual está en la respuesta de GatorV y en el manual, pero hay algo que no funciona.
Lo mas extraño es que no muestra ningún error, las carpetas imagenes y x1xa tienen permisos 777, en el mismo sitio uso las funciones mkdir(), rmdir(), move_uploaded_file(), por lo que dudo que sea un problema con las restricciones del servidor

Por las dudas aquí está el código:
Código PHP:
$src="/home/xxxxxxxx/public_html/imagenes";
$dst="/home/xxxxxxx/public_html/imagenes/x1xa"

function 
rcopy($src$dst) {
  if (
file_exists($dst)) rrmdir($dst);
  if (
is_dir($src)) {
    
mkdir($dst);
    
$files scandir($src);
    foreach (
$files as $file)
    if (
$file != "." && $file != ".."rcopy("$src/$file""$dst/$file"); 
  }
  else if (
file_exists($src)) copy($src$dst);

Desde ya gracias.
__________________
La ciencia al poder. Pazciencia ya viene
  #9 (permalink)  
Antiguo 09/07/2011, 20:19
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: script php para copiar carpeta (no funka)

Y ya intentaste... Llamando a la función?
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #10 (permalink)  
Antiguo 11/07/2011, 20:51
Avatar de ricardo_tu  
Fecha de Ingreso: noviembre-2010
Ubicación: Mas aca del mas alla
Mensajes: 222
Antigüedad: 14 años
Puntos: 32
Respuesta: script php para copiar carpeta (no funka)

Gracias por la ayuda especialmente a GatorV y también a Sourcegeek. El script funcionó por fin.
Tal como dijo Sourcegeek, había que llamar la función y ademas resolver un pequeñisimo distractor gentileza de GatorV ( lo que no esta demas si de aprender se trata).
Asi que Gracias una vez mas.
Pero....... ahora sucedio esto: Fatal error: Maximum execution time of 30 seconds exceeded in /home/xxxxxxxxxx/public_html/copia.php on line 20

Código PHP:
  else if (file_exists($src)) copy($src$dst); //linea 20 
Según entiendo se debe al tiempo de ejecución en el servidor. ¿Es posible resolver eso?
__________________
La ciencia al poder. Pazciencia ya viene
  #11 (permalink)  
Antiguo 11/07/2011, 20:54
Avatar de ricardo_tu  
Fecha de Ingreso: noviembre-2010
Ubicación: Mas aca del mas alla
Mensajes: 222
Antigüedad: 14 años
Puntos: 32
Respuesta: script php para copiar carpeta (no funka)

Asunto resuelto. Gracias
__________________
La ciencia al poder. Pazciencia ya viene

Etiquetas: html, carpetas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:27.