93 lines
2.3 KiB
Perl
93 lines
2.3 KiB
Perl
#!perl
|
|
use strict ;
|
|
use Win32::Process::List;
|
|
|
|
# configuration:
|
|
|
|
# Repertoire de base
|
|
my $rootDir= 'c:\\rsync' ;
|
|
# Repertoire a sauvegarder.
|
|
# /!\ Attention aux /
|
|
# Ne pas inclure la lettre de lecteur.
|
|
my $src= "/Documents and Settings/frederic.helin" ;
|
|
|
|
# nom ou adresse du serveur de sauvegarde
|
|
my $server= "workine" ;
|
|
|
|
# compte utilisé pour les sauvegardes
|
|
my $user= "backup" ;
|
|
|
|
# mot de passe associé au compte $user
|
|
my $pass= 'backup' ;
|
|
|
|
# Répertoire de stockage des sauvegardes sur le server
|
|
my $dst= "::Upload/externe/" ;
|
|
|
|
# chemin d'accès vers l'exécutable rsync
|
|
my $rsync= "$rootDir\\rsync.exe" ;
|
|
|
|
# fichier contenant la liste des fichiers à exclure de la sauvegarde
|
|
my $exclude= "$rootDir\\exclude" ;
|
|
|
|
# Options rsync
|
|
my $rsyncOptions= "-a --delete --stats --exclude-from=$exclude" ;
|
|
|
|
# fichier du mot de passe associé au compte "$user"
|
|
my $passFile= "$rootDir\\pass" ;
|
|
|
|
# fichier de log ( contient la date de la sauvegarde ). doit être dans un emplacement sauvegardé par le serveur car utilisé par celui-ci pour vérifier la periodicité des sauvegardes.
|
|
our $logFile= "$src\\rsync.log" ;
|
|
our $fd ;
|
|
|
|
sub openLog($){
|
|
my $logFile=shift ;
|
|
open our $fd, ">>$logFile" or die "open: $!" ;
|
|
}
|
|
|
|
sub closeLog(){
|
|
close our $fd ;
|
|
}
|
|
|
|
sub writeLog($){
|
|
my $msg = shift ;
|
|
my $date=localtime ;
|
|
print $fd "$date: $msg" ;
|
|
}
|
|
|
|
sub isProcessAlive($){
|
|
my $process=shift ;
|
|
my $P = Win32::Process::List->new();
|
|
my $result = $P->GetProcessPid( $process ) ;
|
|
if( $result > 0 ){ return 1 ; }
|
|
else{ return 0 }
|
|
}
|
|
|
|
sub writePassFile($$){
|
|
my ($file, $pass) = @_ ;
|
|
open my $fd, ">$file" or die "open: $!" ;
|
|
print $fd $pass."\n" or die "print: $!" ;
|
|
close $fd ;
|
|
}
|
|
|
|
sub deletePassFile($){
|
|
my $file = shift ;
|
|
unlink($file) or die "Can't unlink $file: $!";
|
|
}
|
|
|
|
openLog( $logFile ) ;
|
|
writeLog "backup starting\n" ;
|
|
my $process="outlook" ;
|
|
if( isProcessAlive( $process ) ){
|
|
writeLog( "Outlook is running\n" ) ;
|
|
writeLog( "Backup aborted\n" ) ;
|
|
exit 1 ;
|
|
}
|
|
|
|
writePassFile( $passFile, $pass ) ;
|
|
my $cmdArgs="$rsyncOptions"." --password-file="."$passFile \"$src\" $user".'@'."$server$dst" ;
|
|
my $result=` $rsync $cmdArgs 2>&1` ;
|
|
deletePassFile( $passFile ) ;
|
|
writeLog "$result" ;
|
|
writeLog "backup done\n\n" ;
|
|
close( $logFile ) ;
|