вторник, 11 мая 2010 г.

Ротация бекапов в fsbackup

fsbackup - замечательная штука, но сохраняет токо последний бекап. Немного переделал скрипт, заменив сохранение старого бекапа на ротацию до 10 бекапов:

# Удаление старых бекапов
    print "Remove old backup\n";
        foreach $cur_dir ($ftp->ls()) {
            if ($cur_dir =~ /\.9$/) {
                $ftp->delete($cur_dir);
             }
        }
    # Ротация бекапов
        print "Backup rotating:\n";
        for ($i = 8; $i > 0; --$i) {
            $j = $i + 1;
            foreach $cur_dir ($ftp->ls()) {
                $name = $new_name = $cur_dir;
                if ($name =~ /\.$i$/) {
                    $new_name =~ s/\.$i$/\.$j/;
                    print "$name -> $new_name\n";
                    $ftp->rename($name, $new_name) or die "Can't rename $name\n";
                }
            }
        }
        foreach $cur_dir ($ftp->ls()) {
            $name = $new_name = $cur_dir;
                if ($name =~ /\.\w{2,5}$/) {
                    $new_name = $name.".1";
                    print "$name -> $new_name\n";
                    $ftp->rename($name, $new_name) or die "Can't rename $name\n";
                }
        }

1 комментарий:

Анонимный комментирует...

Спасибо за труды, но я думаю было-бы лучшим указать в каком месте скрипта необходимо вставить (заменить) Ваш код :(