Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: elecktra en 15 Agosto 2010, 21:16 pm



Título: Scritp Perl para borrar archivos
Publicado por: elecktra en 15 Agosto 2010, 21:16 pm
Estimados, como estan, hace tiempo encontre la forma de programar un script en Perl para realizar backup de una base de datos de mi web, el mismo es este:

Código
  1. #!/usr/bin/perl
  2. use strict;
  3. print "Content-type: text/html\n\n";
  4. print "Iniciando backup!\n\n";
  5. print "Espere por favor...\n\n";
  6.  
  7. # CUENTA (Ej. cuenta: elserver.com)
  8. my $cuenta = "sitio.com";
  9.  
  10. # USUARIO DE MYSQL
  11. my $usuario = "usuario";
  12.  
  13. # PASSWORD DE MYSQL
  14. my $pass = "password";
  15.  
  16. # IP INTERNA DE MYSQL
  17. my $ip = "192.168.0.X";
  18.  
  19. # BASE DE MYSQL
  20. my $base = "base";
  21.  
  22. my ($wkday,$month,$day,$time,$year) = split(/\s+/, localtime);
  23. my $fecha = "$day-$month-$year";
  24. system("/usr/local/mysql/bin/mysqldump $base -u $usuario --password='$pass' -h $ip > /www/$cuenta/mysql_backup/$cuenta-$fecha.sql");
  25. print "Backup Finalizado!!!\n\n";

La verdad yo de pern no se nada, estoy interesado en hacer un scrip en que em borre lso backup con 1 mes de antiguedad en el servidor, creoq eu modificando ese mismo quizas se pueda.
Espero em puedan ayudar.
Gracias.


Título: Re: Scritp Perl para borrar archivos
Publicado por: ~ Yoya ~ en 15 Agosto 2010, 22:03 pm
toma la fecha actual del sistema local y compáralo con la ultima modificación del bakup, si tiene mas de un mes, ps la borra, si no no xD.


Título: Re: Scritp Perl para borrar archivos
Publicado por: elecktra en 15 Agosto 2010, 23:10 pm
Hola, gracias por al repsuesta Yoya, pero como hago eso, no se nada de Perl, me explcarias.
Gracias.


Título: Re: Scritp Perl para borrar archivos
Publicado por: ~ Yoya ~ en 16 Agosto 2010, 05:21 am
Te voy comentando cada linea, si no sabes "NADA" de perl sera un problema xD.
Código
  1. #!/usr/bin/perl
  2. use strict;
  3.  
  4. my $directorio = '/home/yoya/Escritorio'; #Directorio
  5.  
  6. my $dir = search_backup($directorio);#Almaceno los resultado de la funcion en la variable $dir
  7. my @archivos = split(" ",$dir);#Divido la cadena y los guardo en un arreglo
  8. foreach my $archivos(@archivos){#Recorro el arreglo
  9. my $path = $directorio."/".$archivos;#Path completo del archivo
  10.  
  11. my $file_time = (stat($path))[9];#Obtengo la fecha de la ultima modificacion del archivo
  12.  
  13.  
  14. my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($file_time);
  15. my ($sec1,$min1,$hour1,$mday1,$mon1,$year1,$wday1,$yda1y,$isdst1) = localtime(time);
  16.  
  17. #Si el mes de la ultima modificacion es mayor que el mes actual y el dia de la creacion del archivo
  18. #es mayor al dia actual, se ejecuta el if
  19. if($mon1 > $mon && $mday1 >= $mday || $mon1 > $mon-1){
  20. print "$path ah sido borrado\n";
  21. unlink($path);#Se borra el backup con un mes de antiguedad
  22.  
  23. }#Fin del if()
  24.  
  25. }#Fin del bucle foreach()
  26.  
  27.  
  28.  
  29.  
  30. #Funcion para buscar archivos dentro de un directorio
  31. sub search_backup(){
  32. opendir(DIR, $_[0]) || die "Error al abrir $_[0]\n";#Intentamos abrir el directorio
  33.  
  34. my $result;
  35. while((my $archivos = readdir(DIR))){#Leemos el directorio
  36.  
  37. if($archivos !~ m/\.sql$/ig){#Si la extensión no es .sql se ejecuta el if
  38. next;#Pasamos al siguiente ciclo
  39. }#Fin del if
  40. $result .= "$archivos ";#Vamos agregando cada resultado de cada ciclo a la variable $result
  41. }#Fin del bucle while()
  42.  
  43. return $result; #Retornamo los directorios
  44. }#Fin de la funcion
  45.