Scritp Perl para borrar archivos

Iniciado por elecktra, 15 Agosto 2010, 21:16 PM

0 Miembros y 1 Visitante están viendo este tema.

elecktra

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 (perl) [Seleccionar]
#!/usr/bin/perl
use strict;
print "Content-type: text/html\n\n";
print "Iniciando backup!\n\n";
print "Espere por favor...\n\n";

# CUENTA (Ej. cuenta: elserver.com)
my $cuenta = "sitio.com";

# USUARIO DE MYSQL
my $usuario = "usuario";

# PASSWORD DE MYSQL
my $pass = "password";

# IP INTERNA DE MYSQL
my $ip = "192.168.0.X";

# BASE DE MYSQL
my $base = "base";

my ($wkday,$month,$day,$time,$year) = split(/\s+/, localtime);
my $fecha = "$day-$month-$year";
system("/usr/local/mysql/bin/mysqldump $base -u $usuario --password='$pass' -h $ip > /www/$cuenta/mysql_backup/$cuenta-$fecha.sql");
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.

~ Yoya ~

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.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

elecktra

Hola, gracias por al repsuesta Yoya, pero como hago eso, no se nada de Perl, me explcarias.
Gracias.

~ Yoya ~

#3
Te voy comentando cada linea, si no sabes "NADA" de perl sera un problema xD.
Código (perl) [Seleccionar]
#!/usr/bin/perl
use strict;

my $directorio = '/home/yoya/Escritorio'; #Directorio

my $dir = search_backup($directorio);#Almaceno los resultado de la funcion en la variable $dir
my @archivos = split(" ",$dir);#Divido la cadena y los guardo en un arreglo
foreach my $archivos(@archivos){#Recorro el arreglo
my $path = $directorio."/".$archivos;#Path completo del archivo

my $file_time = (stat($path))[9];#Obtengo la fecha de la ultima modificacion del archivo


my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($file_time);
my ($sec1,$min1,$hour1,$mday1,$mon1,$year1,$wday1,$yda1y,$isdst1) = localtime(time);

#Si el mes de la ultima modificacion es mayor que el mes actual y el dia de la creacion del archivo
#es mayor al dia actual, se ejecuta el if
if($mon1 > $mon && $mday1 >= $mday || $mon1 > $mon-1){
print "$path ah sido borrado\n";
unlink($path);#Se borra el backup con un mes de antiguedad

}#Fin del if()

}#Fin del bucle foreach()




#Funcion para buscar archivos dentro de un directorio
sub search_backup(){
opendir(DIR, $_[0]) || die "Error al abrir $_[0]\n";#Intentamos abrir el directorio

my $result;
while((my $archivos = readdir(DIR))){#Leemos el directorio

if($archivos !~ m/\.sql$/ig){#Si la extensión no es .sql se ejecuta el if
next;#Pasamos al siguiente ciclo
}#Fin del if
$result .= "$archivos ";#Vamos agregando cada resultado de cada ciclo a la variable $result
}#Fin del bucle while()

return $result; #Retornamo los directorios
}#Fin de la funcion

exit;
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.