D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
blackhat.pw
:
/
kunden
/
lib
/
susshi
/
exec
/
Filename :
backup
back
Copy
#!/usr/bin/perl use warnings; use strict; use lib '/usr/lib/susshi/exec'; use Susshi; use File::Temp qw( tempfile ); use IPC::Run qw( run timeout ); my ($dump_fh, $dump_filename); my $susshi = Susshi->new( -read_input => 1 ); umask(0077); my ($backupdir, $filename) = $susshi->get_backuppath; ! -f $filename or error_die "File already exists: $filename\n"; my $directory = $susshi->get_directory( 'directory' ); my $database = $susshi->get_database( 'database' ); if (! $database && ! $directory) { error_die "Please provide 'database' and/or 'directory' data.\n"; } # Build TAR command my @tar_cmd = ('tar', '-czf', $filename); # Database backup requested? if ($database) { my @cmd=( '/usr/bin/mysqldump', $database->get_mysql_args); my (undef, $tables) = $database->get_tables(); push @cmd, @$tables; eval { ($dump_fh, $dump_filename) = tempfile( '.database.dump.XXXX', UNLINK => 1); }; error_die ($@) if $@; eval { my $err=''; run \@cmd, '>', $dump_fh, '2>', \$err, timeout (3600) or die $err; }; error_die ($@) if $@; push @tar_cmd, ('--transform', "s,$dump_filename,database.dump,", $dump_filename); } # Directory backup requested? if ($directory) { push @tar_cmd, ('--transform', 's,^\.,files,', '-C', $directory, '.'); } eval { my $err=''; if ( ! run \@tar_cmd, '2>', \$err, timeout (3600) ) { if ($? == 256) { info("tar exit status 1: $err"); } else { die $err; } } }; if ($@) { unlink $filename; error_die "Could not create archive: $@"; } info "Created backup $filename"; send_json_output({size => -s $filename}); exit 0;