LinuxForum.Fans
Тема

Скрипт бекапа с проверкой MD5

Автор: Kettler 2 сообщений 974 просмотров
#254208

Накидал скрипт на perl.
Может где или что упустил. Кто что подскажет буду ток рад :).
Охото доделать :) смысл что в понедельник делает полный бекап а во все остальные инкрементальные.

text

#!/usr/bin/perl
use POSIX ();
use Digest::MD5::File qw( file_md5_hex );
use File::Copy;
$date = POSIX::strftime('%a', localtime);
$backupfolder = "/home/user/backup/";
$pathfolder = "/home/user/test/*";
$incrfilemonday = ("$backupfolder". ""  ."$date");
$filebackup = ("$backupfolder". "" ."$date". "" .".tar");
$filebackupnew = ("/home/user/". "" ."$date". "" .".tar");

if ($date eq "Monday") { backmonday (); } else { if ($date eq "Tuesday") { backinc (Monday); } if ($date eq "Wednesday") { backinc (Tuesday); } if ($date eq "Thursday") { backinc (Wednesday); } if ($date eq "Friday") { backinc (Thursday); } if ($date eq "Saturday") {backinc (Friday); } if ($date eq "Sunday") { backinc (Saturday); } }

sub backinc { my ($day) = @_; if(-e $incrfilemonday) { unlink $incrfilemonday; } copy("$backupfolder". "" ."$day", "$backupfolder". "" ."$date"); $pathinc = "$backupfolder". "" ."$date"; print $pathinc; system (`/bin/tar --create --ignore-failed-read --one-file-system --preserve-permissions --recursion --sparse --gzip --file=$filebackup --listed-incremental=$pathinc $pathfolder`); mdtest ($filebackup); }

sub backmonday { if(-e $incrfilemonday) { unlink $incrfilemonday; } if(-e $filebackup) { unlink $filebackup; } system (`/bin/tar --create --ignore-failed-read --one-file-system --preserve-permissions --recursion --sparse --gzip --file=$filebackup --listed-incremental=$incrfilemonday $pathfolder`); mdtest ($filebackup); }

sub mdtest { my ($file) = @_; copy($file, $filebackupnew) or die mdtest (); $mdnew = file_md5_hex($filebackupnew); $mdold = file_md5_hex($file);

if ($mdnew == $mdold) {} else { unlink $filebackupnew; copy($file, $filebackupnew) or die mdtest (); } }

#254223

Щас работает как положенно. Может будут какие замечания.
Основа данного скрипта была взята отсюда http://alex-at.ru/linux/tar-linux
Чуть не забыл ))) для чего нужен md5. Просто идея скрипта сразу копировать бекап на сетевой путь.
Так как всякое бывает в сети вот и решил прикрутить проверку md5.

Войдите или зарегистрируйтесь, чтобы ответить.