Skip to content

Instantly share code, notes, and snippets.

@flaviolopes
Created January 15, 2011 00:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save flaviolopes/780559 to your computer and use it in GitHub Desktop.
Save flaviolopes/780559 to your computer and use it in GitHub Desktop.
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use Archive::Tar;
use File::Find;
use Date::Simple (':all');
# Define quais diretorios entrarao no backup:
my @diretorios = qw{
/home/flavio/temp
/home/flavio/Documentos
};
# Define a data de geracao do backup e sua formatacao
my $date = Date::Simple->new(today);
my $data_backup = $date->format("%d-%m-%Y");
my $dia_da_semana = $date->day_of_week();
if ( $dia_da_semana == 0 )
{ # Se o dia da semana for ZERO (Domingo), então faz o Full
## Define as variáveis do Backup Full:
# Define qual o destino do backup FULL
my $destino = "/home/flavio/destino_full/";
# Define o prefixo do nome
my $prefixo = "Imagens-Full_";
# Concatena as variaves
my $backup_nome = "$destino" . "$prefixo" . "$data_backup" . ".tar.bz2";
## Remove Backups antigos antes de gerar o novo backup
find( \&remove_bkp_antigo, $destino );
## Gera o Backup FULL
my $tar = Archive::Tar->new;
$tar->add_files(@diretorios);
$tar->write( "$backup_nome", COMPRESS_BZIP ); # compressao em bzip2
}
else { # Caso contrario faz o Incremental
find( \&busca, @diretorios );
my @arquivos;
sub busca {
if ( -f $File::Find::name ) {
push( @arquivos, $File::Find::name ) if 1.0 > -M;
# Aqui o "1.0" representa o número de dias
# Por exemplo se fossemos buscar dos últmos 2 dias: "2.0"
}
}
## Define as variáveis do Backup Incremental:
# Define qual o destino do backup INCREMENTAL
my $destino = "/home/flavio/destino_incremental/";
# Define o prefixo do nome
my $prefixo = "Imagens-Incremental_";
# Concatena as variáveis
my $backup_nome = "$destino" . "$prefixo" . "$data_backup" . ".tar.bz2";
## Remove Backups antigos antes de gerar o novo backup
find( \&remove_bkp_antigo, $destino );
## Gera o Backup INCREMENTAL
my $tar = Archive::Tar->new;
$tar->add_files(@arquivos);
$tar->write( "$backup_nome", COMPRESS_BZIP ); # compressao em bzip2
}
### Sub que remove backups antigos
sub remove_bkp_antigo {
if ( -f $File::Find::name ) {
unlink $_ if 8.0 > -M;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment