D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
blackhat.pw
:
/
kunden
/
lib
/
susshi
/
exec
/
Filename :
restore
back
Copy
#!/usr/bin/perl use warnings; use strict; use lib '/usr/lib/susshi/exec'; use Susshi; use File::Temp qw( tempdir ); use IPC::Run qw( run timeout ); my ($tempdir); my $susshi = Susshi->new( -read_input => 1 ); my ($backupdir, $filename) = $susshi->get_backuppath; -f $filename or error_die "File does not exist: $filename\n"; my $database = $susshi->get_database('database'); my $directory = $susshi->get_directory('directory'); if (! $database && ! $directory) { error_die "Please provide 'database' and/or 'directory' data."; } eval { my $old_umask = umask(0077); $tempdir = tempdir( '.restore.XXXX', CLEANUP => 1) or die; umask $old_umask; }; if ($@) { error_die "Cannot create tempdir: $!"; } # Build TAR command my @tar_cmd = ('tar', '-C', $tempdir, '-xzf', $filename); push @tar_cmd, 'database.dump' if $database; push @tar_cmd, 'files/' if $directory; # Unpack the backup eval { my $err=''; run \@tar_cmd, '2>', \$err, timeout (3600) or die $err; }; error_die "untarring $filename to $tempdir failed: $@" if $@; if ($database) { my @cmd=( '/usr/bin/mysql', $database->get_mysql_args ); eval { my $err=''; run \@cmd, '<', $tempdir . '/database.dump', '2>', \$err, timeout (3600) or die $err; }; unlink 'database.dump'; error_die "restoring database failed: $@" if $@; } if ($directory) { rename $directory, $tempdir . '/old/'; rename ($tempdir . '/files/', $directory) or error_die "Cannot move $tempdir/files/ to $directory\n"; } info "Restored $filename"; exit 0;