tar.gz Komprimierung

Apache, Lighttpd, nginx, Cherokee
Post Reply
avs
Posts: 4
Joined: 2004-08-03 19:11
Location: Berlin
Contact:
 

tar.gz Komprimierung

Post by avs »

Apache/1.3.29 (Debian GNU/Linux) PHP/4.3.3 mod_ssl/2.8.16 OpenSSL/0.9.7c mod_perl/1.29

Ein CGI Script zieht ein Datenbank-Backup und sollte es eigendlich im Format tar.gz speichern.
Das ist aber nicht möglich. Funktioniert aber bei gleicher Software auf anderen Servern.

Welche Ã?nderung muss ich ausführen damit diesen Format akzeptiert wird?
sascha
Posts: 1325
Joined: 2002-04-22 23:08
 

Re: tar.gz Komprimierung

Post by sascha »

Kannst du "Das ist aber nicht möglich" evtl. noch genauer beschreiben? Fehlermeldungen, Logauszüge?
duergner
Posts: 923
Joined: 2003-08-20 11:30
Location: Pittsburgh, PA, USA
 

Re: tar.gz Komprimierung

Post by duergner »

Definiere 'nicht akzeptiert'.
avs
Posts: 4
Joined: 2004-08-03 19:11
Location: Berlin
Contact:
 

Re: tar.gz Komprimierung

Post by avs »

nicht akzeptiert heißt die Backupdatei wird nicht gespeichert. Die Rechte für den Backup-Ordner sind richtig vergegen.
Das Script ist Perl und läuft ohne Fehler auf einem anderen Server.

die Einzelheiten des Servers sind hier:
http://server1932015471.serverpool.info ... tion=index
duergner
Posts: 923
Joined: 2003-08-20 11:30
Location: Pittsburgh, PA, USA
 

Re: tar.gz Komprimierung

Post by duergner »

avs wrote:nicht akzeptiert heißt die Backupdatei wird nicht gespeichert. Die Rechte für den Backup-Ordner sind richtig vergegen.
Was steht denn in den Log Dateien?
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: tar.gz Komprimierung

Post by captaincrunch »

<glaskugel>
Der Webserver hat kein Schreibrecht ins Zielverzeichnis.
</glaskugel>

Mann mann mann, liegt's eigentlich am Wetter, oder warum sind nur noch wenige in der Lage, ein Problem exakt zu beschreiben...ganz zu schweigen von aussagekräftigen Logs...?
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
avs
Posts: 4
Joined: 2004-08-03 19:11
Location: Berlin
Contact:
 

Re: tar.gz Komprimierung

Post by avs »

Das ist die Log Fehlermeldung

gzip: 12345.tar: No such file or directory
gzip: 12345.tar: No such file or directory
gzip: 12345.tar: No such file or directory
gzip: 12345.tar: No such file or directory
gzip: 12345.tar: No such file or directory
gzip: 12345.tar: No such file or directory
gzip: 12345.tar: No such file or directory
gzip: 12345.tar: No such file or directory
gzip: 12345.tar: No such file or directory
chris76
Posts: 1878
Joined: 2003-06-27 14:37
Location: Germering
 

Re: tar.gz Komprimierung

Post by chris76 »

Ein letzter Versuch, zeig halt mal das Script oder etwas was weiterhelfen kann. Existiert die datei ? Stimmen die Pfade? kommt die meldung beim zurücksichern?
Gruß Christian

BofH excuses: YOU HAVE AN I/O ERROR -> Incompetent Operator error
avs
Posts: 4
Joined: 2004-08-03 19:11
Location: Berlin
Contact:
 

Re: tar.gz Komprimierung

Post by avs »

Scriptauszug


sub get_dir_size{
my $dir=shift;
my $dirsize=0;
if (-d "$dir"){
my @files;
opendir(DIR,$dir) || die "Can not open directory";
while (my $file=readdir(DIR)){
next if ($file=~/^.+$/);
push (@files,$file);
}
closedir(DIR);
foreach my $file(@files){
if(-d "$dir/$file"){
$dirsize += get_dir_size("$dir/$file");
}else{
$dirsize += (stat("$dir/$file"))[7];
}
}
}elsif(-f $dir){
return (stat("$dir"))[7];
}
return $dirsize;
}
###################
sub remove_dir{
my $dir=shift;
if (-d "$dir"){
opendir(DIR,$dir) || die "Can not open directory";
my @files;
while (my $file=readdir(DIR)){
next if ($file=~/^.+$/);
push (@files,$file);

}
closedir(DIR);
foreach my $file(@files){
if(-d "$dir/$file"){
remove_dir("$dir/$file");
}else{
unlink("$dir/$file") || die "Can not unlink file $dir/$file";
}
}
}
rmdir($dir);
}
sub create_backup{
my $name=shift;
unless (-d $glbackupdir){
mkdir($glbackupdir,0777) || die "Can not create directory $glbackupdir : $!";
}
my @tables=map{"${PREF}$_"}@backup_tables;
return if ($name=~/[^a-zA-Z0-9_-]/);
my $dirstore="$glbackupdir/$name";
remove_dir($dirstore) if (-d $dirstore);
mkdir($dirstore,0777) || die "Can not create directory $dirstore : $!";
my $path;
if($ENV{PATH_TRANSLATED}){
$path="$ENV{PATH_TRANSLATED}";
}elsif($ENV{SCRIPT_FILENAME}){
$path="$ENV{SCRIPT_FILENAME}";
}
my $delm;
$delm='/' if $path=~///;
$delm='\' if $path=~/\/;
my @path=split(//|\/,$path);
$path=join($delm, @path[0..@path-2]);
foreach $table(@tables){
my $filename="$path${delm}$glbackupdir${delm}$name${delm}$table.dmp";
open (FILE,">$filename") || die "Can not open file $filename for writing";
my $sql="SHOW fields FROM $table";
my $out=$db->prepare($sql);
$out->execute();
my @cols;
while (my @output=@{$out->fetchrow_arrayref}){
push (@cols,$output[0]);
}
print FILE join("t",@cols)."n";
my $sql="SELECT * from $table";
my $out=$db->prepare($sql);
$out->execute();
while (my %output=%{$out->fetchrow_hashref}){
@output=map{$db->quote($output{$_})}@cols;
#map{s/t/\t/g}@output;
print FILE join(", ",@output)."n";
}
close(FILE);
}
unless ($^O=~/win/i){
#Linux
chdir($glbackupdir);
`pktar -cf $name.tar $name`;
`gzip $name.tar`;
chdir("..");
remove_dir("$glbackupdir/$name");
}else{

}
}
sub LoadTableFromFile{
my($table,$file)=@_;
unless(open (FILE,$file)){
die ("Can not open file $file : $: ");
return;
}
$db->do("DELETE FROM $table");
unless($file=~/attach/){
# local $/="n";
my $cols=<FILE>;
chomp($cols);
my @cols=split(/t/,$cols);
$cols=join(", ",@cols);
while (<FILE>){
chomp;
$sql="INSERT INTO $table ($cols) VALUES ($_)";
$db->do($sql);

}
}else{
binmode(FILE);
my $buff,$data;
while (read(FILE,$buff,8*2**10)){
$data.=$buff;
}
my @lines=split(/n/,$data);
$data="";
$buff="";
my @cols=split(/t/,shift(@lines));
foreach(@lines){
$sql="INSERT INTO $table ($cols) VALUES ($_)";
$db->do($sql);
}
}
close(FILE);
}
sub print_settings_backup{
my $page = new hfparser(
DATA=>$settings_shabl,
ERROR_AFTER_INPUT=>0
);
my @tables=map{"${PREF}$_"}@backup_tables;
if ($PAR{issubmit}=1){
if ($PAR{backup}){
if($PAR{filename}=~/[^a-zA-Z0-9_-]/){
$page->set_error('filename', 'Incorrect filename');
}
if(length($PAR{filename})<4){
$page->set_error('filename', 'Must be more then 3 character');
}

unless ($page->is_error()){
create_backup($PAR{filename});
}
}
if ($PAR{'unlink'}){
my @files=$q->param("unlinkcheck");
foreach my $file(@files){
next if($file=~/[^a-zA-Z0-9_-]/);
my $filename="$glbackupdir/$file";
remove_dir($filename) if (-d $filename);
unless ($^O=~/win/i){
$filename=$filename.'.tar.gz';
unlink($filename) || die ("Can not remove file $filename $!");
}
}

}
if ($PAR{'restore'}){
if($PAR{rest}){
chdir($glbackupdir);
my $backup=$PAR{rest};
unless($^O=~/win/i){
`gunzip < $backup.tar.gz | tar xvf -` if (-f "$backup.tar.gz");
unless (-d $backup){
$page->set_error('none',"Files was not unpacked from $backup.tar.gz");
}
}
foreach my $table(@tables){
$page->set_error($table, "The file $table.dmp is not exist on backup directory $backup") unless (-f "$backup/$table.dmp");
}
unless ($page->is_error()){
$page->add_regesp("{error}",qq{<h1 class="mess">Database was restored from backup - $backup</h1>});
my $path;
if($ENV{PATH_TRANSLATED}){
$path="$ENV{PATH_TRANSLATED}";
}elsif($ENV{SCRIPT_FILENAME}){
$path="$ENV{SCRIPT_FILENAME}";
}
my $delm;
$delm='/' if $path=~///;
$delm='\' if $path=~/\/;
my @path=split(//|\/,$path);
$path=join($delm, @path[0..@path-2]);
#my $path=$ENV{SCRIPT_FILENAME};
#my @path=split(///,$path);
#$path=join("/", @path[0..@path-2]);
foreach $table(@tables){
my $filename="$path${delm}$glbackupdir${delm}$backup${delm}$table.dmp";
LoadTableFromFile($table,$filename);
}
save_config(0,"adminpwd",$CONF{adminpwd});
unless ($^O=~/win/i){
remove_dir("$backup");
}
}
chdir('..');
}
}
}
opendir(DIR,$glbackupdir);
my @backups;
while(my $file=readdir(DIR)){
next if ($file=~/^.+$/);
unless ($^O=~/win/i){
if ($file=~/(.*).tar.gz/){
push(@backups,$1);
}
}else{
if (-d "$glbackupdir/$file"){
push(@backups,$file);
}
}
}
my $BACKUP="";
foreach my $name(@backups){
my $filename="$glbackupdir/$name";
$filename=$filename.'.tar.gz' unless ($^O=~/win/i);
my($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, $atime,$mtime,$ctime,$blksize,$blocks)= stat $filename;
my $time=localtime($ctime);
if ($^O=~/win/i){
$size=get_dir_size("$glbackupdir/$name");
}
$BACKUP.=<<ALL__;
<tr class="data">
<td width="7%" align="center"><INPUT type="checkbox" name="unlinkcheck" value="$name"></td>
<td width="30%" align="center">$name</td>
<td width="6%" align="center"><INPUT type="radio" name="rest" value="$name"></td>
<td width="24%" align="center"><NOBR>$time</NOBR></td>
<td width="33%" align="center">$size</td>
</tr>
ALL__

}
$page->add_regesp('{BACKUP}',$BACKUP);
$page->SplitData("#begin#backup","#end#backup");
$page->deleteBEFORE_AFTER();
unless($BACKUP){
$page->SplitData("<!--HIDE_START-->","<!--HIDE_END-->");
$page->replaceINSIDE("");
}
#$page->add_regesp("{mess_hour}",sprintf("%4d",$PAR{messcount}/$sec*60*60));
$page->ParseData;
return $page->as_string;
}
Post Reply