Test Foro de elhacker.net SMF 2.1

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 (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.
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 (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;