1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#! /usr/bin/perl
use strict;
use warnings;
use Cwd;
use Archive::Tar;
use IO::Zlib;
use IO::Compress::Bzip2 qw(bzip2 $Bzip2Error) ;
use Compress::Zlib;
use File::Basename;
my $strVereichnisZiel = "/home/mein_user/sicherung/";
my $VerzPfadNow = cwd . '/';
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
my $datum = sprintf "%04d_%02d_%02d" , $year+=1900 , $mon+=1 , $mday ;
my $strZielVerzeichnis = $strVereichnisZiel."sicherung_".$datum.".tar.bz2";
my $result=opendir(DIR,$VerzPfadNow) || die $!;
my @files = grep { !/(\.|\.sh|\.sh~)$/ } readdir(DIR);
close DIR;
my $tar = Archive::Tar->new;
foreach my $dateien ( @files )
{
print "$dateien\n"; # nur Testausgabe
$tar->add_files( $dateien);
}
$tar->write( $VerzPfadNow."datei_jetzt6_1.tar" );
# ab hier versuche es zu packe,
# funktioniert leider nicht
#Archive::Tar->create_archive( $VerzPfadNow."datei_jetzt4_2.tbz", COMPRESS_BZIP, $VerzPfadNow."datei_jetzt2.tar" );
#Archive::Tar->create_archive( $VerzPfadNow."datei_jetzt7.tbz", COMPRESS_BZIP, @listeDatei );
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
#!/usr/bin/perl use strict; use warnings; use Cwd; use Archive::Tar; use File::Find; use File::Spec; use POSIX qw(strftime); my $strVereichnisZiel = "/home/mein_user/sicherung/"; my $VerzPfadNow = cwd(); my $datum = strftime("%Y_%m_%d" , localtime() ); my $archiveFile = File::Spec->join( $strVereichnisZiel, sprintf( 'sicherung_%s.tar.bz2', $datum ) ); my $tar = Archive::Tar->new; find({ wanted => sub{ return if( /(\.|\.sh|\.sh~)$/ ); my $path = $File::Find::name; return if( -d $path ); my ( $file ) = $tar->add_files( $path ); my $name = File::Spec->abs2rel( $path, $VerzPfadNow ); $file->rename( $name ); }, no_chdir => 1, }, $VerzPfadNow ); $tar->write( $archiveFile, COMPRESS_BZIP );
1
2
my $fileEnding ='sicherung_'.$datum.'.tar.bz2';
my $archiveFile = File::Spec->join( $strVereichnisZiel, $fileEnding );
# my $archiveFile = File::Spec->join( $strVereichnisZiel, printf( 'sicherung_%s.tar.bz2', $datum ) );
2012-08-05T16:24:01 karl34Danke für Deine Hilfe, das ist was ich gesucht habe, trotz dem das fast alle was im "find" geschieht ist für mich zu hoch.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# in $_ steht der aktuelle Dateiname # springe aus der anonymen Funktion wenn . oder sh oder .sh~ return if( /(\.|\.sh|\.sh~)$/ ); # der aktuelle Pfad my $path = $File::Find::name; # springe aus der anonymen Funktion, wenn es ein Ordner ist return if( -d $path ); # füge dem Archiv die Datei hinzu my ( $file ) = $tar->add_files( $path ); # mache aus dem Absoluten Pfad einen relativen bezüglich $VerzPfadNow my $name = File::Spec->abs2rel( $path, $VerzPfadNow ); # ändere den Namen im Archiv $file->rename( $name );
2012-08-05T16:24:01 karl34Der Grund, das Archiv wurde zwar erstellt aber immer nur mit dem Namen "1".