We are in the process of migrating this forum. A new space will be available soon. We are sorry for the inconvenience.

OpenVZ-Backups auf FTP-Server kopieren


Xent
25.12.10, 10:39
Hallo zusammen,

ich möchte meine Backups von OpenVZ direkt nach dem erstellen auf einen FTP-Server kopieren lassen.
Das Script habe ich soweit auch hinbekommen.
Leider habe ich auf dem FTP-Server nur 100GB Speicher.
Daher sollte das Script auch automatisch alte Backups löschen.

Hier mein aktuelles Script in Perl:
Code:
#!/usr/bin/perl -w

# example hook script for vzdump (--script option)

#use strict;

#print "HOOK: " . join (' ', @ARGV) . "\n";

my $phase = shift;

if ($phase eq 'job-start' || 
    $phase eq 'job-end'  || 
    $phase eq 'job-abort') { 

    # do what you want 

} elsif ($phase eq 'backup-start' || 
	 $phase eq 'backup-end' ||
	 $phase eq 'backup-abort' || 
	 $phase eq 'log-end' || 
	 $phase eq 'pre-stop' ||
	 $phase eq 'pre-restart') {

    my $mode = shift; # stop/suspend/snapshot
    my $vmid = shift;
    my $vmtype = $ENV{VMTYPE}; # openvz/qemu
    my $dumpdir = $ENV{DUMPDIR};
    my $hostname = $ENV{HOSTNAME};

    # Logindaten für FTP-Server
    my $ftphost = 'ftpback14.ovh.net';
    my $ftpuser = 'user';
    my $ftppass = 'passwort';

    my $ftpdirectory = "backups";

    # tarfile is only available in phase 'backup-end'
    my $tarfile = $ENV{TARFILE};

    # logfile is only available in phase 'log-end'
    my $logfile = $ENV{LOGFILE}; 

    #print "HOOK-ENV: phase=$phase;vmtype=$vmtype;dumpdir=$dumpdir;hostname=$hostname;tarfile=$tarfile;logfile=$logfile\n";

    # example: copy resulting backup file to another host using scp
    if ($phase eq 'backup-end') {
	print "Transfering backup to $ftphost/$ftpdirectory/$vmid";

    	system ("lftp -v -c 'open $ftphost && login $ftpuser $ftppass; mkdir $ftpdirectory && cd $ftpdirectory || cd $ftpdirectory; mkdir $vmid && cd $vmid || cd $vmid; mput $tarfile'") == 0 ||
    	    die "copy tar file to backup-host failed";
    }

    # example: copy resulting log file to another host using scp
    if ($phase eq 'log-end') {
    	#system ("scp $logfile backup-host:/backup-dir") == 0 ||
    	#    die "copy log file to backup-host failed";
    }
    
} else {

    die "got unknown phase '$phase'";

}

exit (0);
Könnte mir wer helfen die Funtkion zum automatischen löschen zu implementieren?