projects
/
BackupPC.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
- fixed configure.pl and makeDist.
[BackupPC.git]
/
bin
/
BackupPC_tarCreate
diff --git
a/bin/BackupPC_tarCreate
b/bin/BackupPC_tarCreate
index
071de33
..
97b9878
100755
(executable)
--- a/
bin/BackupPC_tarCreate
+++ b/
bin/BackupPC_tarCreate
@@
-23,6
+23,8
@@
# -p pathAdd new path prefix
# -b BLOCKS BLOCKS x 512 bytes per record (default 20; same as tar)
# -w writeBufSz write buffer size (default 1MB)
# -p pathAdd new path prefix
# -b BLOCKS BLOCKS x 512 bytes per record (default 20; same as tar)
# -w writeBufSz write buffer size (default 1MB)
+# -e charset charset for encoding file names (default: value of
+# $Conf{ClientCharset} when backup was done)
#
# The -h, -n and -s options specify which dump is used to generate
# the tar archive. The -r and -p options can be used to relocate
#
# The -h, -n and -s options specify which dump is used to generate
# the tar archive. The -r and -p options can be used to relocate
@@
-51,7
+53,7
@@
#
#========================================================================
#
#
#========================================================================
#
-# Version
2.1.0, released 20 Jun 2004
.
+# Version
3.0.0alpha, released 23 Jan 2006
.
#
# See http://backuppc.sourceforge.net.
#
#
# See http://backuppc.sourceforge.net.
#
@@
-62,19
+64,17
@@
no utf8;
use lib "/usr/local/BackupPC/lib";
use File::Path;
use Getopt::Std;
use lib "/usr/local/BackupPC/lib";
use File::Path;
use Getopt::Std;
+use Encode qw/from_to/;
use BackupPC::Lib;
use BackupPC::Attrib qw(:all);
use BackupPC::FileZIO;
use BackupPC::View;
die("BackupPC::Lib->new failed\n") if ( !(my $bpc = BackupPC::Lib->new) );
use BackupPC::Lib;
use BackupPC::Attrib qw(:all);
use BackupPC::FileZIO;
use BackupPC::View;
die("BackupPC::Lib->new failed\n") if ( !(my $bpc = BackupPC::Lib->new) );
-my $TopDir = $bpc->TopDir();
-my $BinDir = $bpc->BinDir();
-my %Conf = $bpc->Conf();
my %opts;
my %opts;
-if ( !getopts("th:n:p:r:s:b:w:", \%opts) || @ARGV < 1 ) {
+if ( !getopts("t
e:
h:n:p:r:s:b:w:", \%opts) || @ARGV < 1 ) {
print STDERR <<EOF;
usage: $0 [options] files/directories...
Required options:
print STDERR <<EOF;
usage: $0 [options] files/directories...
Required options:
@@
-90,6
+90,8
@@
usage: $0 [options] files/directories...
-p pathAdd new path prefix
-b BLOCKS BLOCKS x 512 bytes per record (default 20; same as tar)
-w writeBufSz write buffer size (default 1048576 = 1MB)
-p pathAdd new path prefix
-b BLOCKS BLOCKS x 512 bytes per record (default 20; same as tar)
-w writeBufSz write buffer size (default 1048576 = 1MB)
+ -e charset charset for encoding file names (default: value of
+ \$Conf{ClientCharset} when backup was done)
EOF
exit(1);
}
EOF
exit(1);
}
@@
-123,12
+125,16
@@
if ( $i >= @Backups ) {
exit(1);
}
exit(1);
}
+my $Charset = $Backups[$i]{charset};
+$Charset = $opts{e} if ( $opts{e} ne "" );
+
my $PathRemove = $1 if ( $opts{r} =~ /(.+)/ );
my $PathAdd = $1 if ( $opts{p} =~ /(.+)/ );
my $PathRemove = $1 if ( $opts{r} =~ /(.+)/ );
my $PathAdd = $1 if ( $opts{p} =~ /(.+)/ );
-if ( $opts{s} !~ /^([\w\s
\.\/\$
-]+)$/ && $opts{s} ne "*" ) {
+if ( $opts{s} !~ /^([\w\s
.\/$(){}[\]
-]+)$/ && $opts{s} ne "*" ) {
print(STDERR "$0: bad share name '$opts{s}'\n");
exit(1);
}
print(STDERR "$0: bad share name '$opts{s}'\n");
exit(1);
}
+
our $ShareName = $opts{s};
our $view = BackupPC::View->new($bpc, $Host, \@Backups);
our $ShareName = $opts{s};
our $view = BackupPC::View->new($bpc, $Host, \@Backups);
@@
-227,7
+233,7
@@
sub archiveWrite
#
sub archiveWriteHardLinks
{
#
sub archiveWriteHardLinks
{
- my
$fh
= @_;
+ my
($fh)
= @_;
foreach my $hdr ( @HardLinks ) {
$hdr->{size} = 0;
my $name = $hdr->{linkname};
foreach my $hdr ( @HardLinks ) {
$hdr->{size} = 0;
my $name = $hdr->{linkname};
@@
-360,6
+366,14
@@
sub TarWriteFileInfo
{
my($fh, $hdr) = @_;
{
my($fh, $hdr) = @_;
+ #
+ # Convert path names to requested (eg: client) charset
+ #
+ if ( $Charset ne "" ) {
+ from_to($hdr->{name}, "utf8", $Charset);
+ from_to($hdr->{linkname}, "utf8", $Charset);
+ }
+
#
# Handle long link names (symbolic links)
#
#
# Handle long link names (symbolic links)
#
@@
-373,6
+387,7
@@
sub TarWriteFileInfo
TarWrite($fh, \$data);
TarWritePad($fh, length($data));
}
TarWrite($fh, \$data);
TarWritePad($fh, length($data));
}
+
#
# Handle long file names
#
#
# Handle long file names
#
@@
-483,6
+498,7
@@
sub TarWriteFile
$done = 1;
} else {
foreach my $arg ( @ARGV ) {
$done = 1;
} else {
foreach my $arg ( @ARGV ) {
+ $arg = "/" if ( $arg eq "." );
$arg =~ s{^\./+}{/};
$arg =~ s{/+$}{};
$done = 1 if ( $name eq $arg || $name =~ /^\Q$arg\// );
$arg =~ s{^\./+}{/};
$arg =~ s{/+$}{};
$done = 1 if ( $name eq $arg || $name =~ /^\Q$arg\// );
@@
-504,7
+520,7
@@
sub TarWriteFile
my $name = $hdr->{linkname};
$name =~ s{^\./}{/};
$HardLinkExtraFiles{$name} = $hdr->{name};
my $name = $hdr->{linkname};
$name =~ s{^\./}{/};
$HardLinkExtraFiles{$name} = $hdr->{name};
- archiveWrite($fh, $
hdr->{linkname}
, $hdr->{name});
+ archiveWrite($fh, $
name
, $hdr->{name});
}
} elsif ( $hdr->{type} == BPC_FTYPE_SYMLINK ) {
#
}
} elsif ( $hdr->{type} == BPC_FTYPE_SYMLINK ) {
#