Files
SauvegardePST/Sauvegarde.pl
2025-08-27 09:03:01 +02:00

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 ) ;