То, как я могу заархивировать каталог в Perl как tar, делает в UNIX?

Нашел ответ. Это может быть слишком специфично для моего кода или слишком расплывчато, чтобы быть полезным, но я решил, что все равно оставлю это здесь ...

На этапе пост-обработки инициализации Spring все компоненты bean были отправлены через следующий класс весной

org.springframework.beans.factory.config.PropertyPlaceholderConfigurer

Метод:

protected String resolPlaceholder (String, Properties, int)

Каждый атрибут beanClass пытался разрешиться как свойство и обнулялся. Не знаю точно, почему это происходило только с юнит-тестами

7
задан brian d foy 7 February 2009 в 00:15
поделиться

5 ответов

Вот простой пример:

#!/usr/bin/perl -w

use strict;
use warnings 'all';
use Archive::Tar;

# Create a new tar object:
my $tar = Archive::Tar->new();

# Add some files:
$tar->add_files( </path/to/files/*.html> );
# */ fix syntax highlighing in stackoverflow.com

# Finished:
$tar->write( 'file.tar' );

# Now extract:
my $tar = Archive::Tar->new();
$tar->read( 'file.tar' );
$tar->extract();
9
ответ дан 6 December 2019 в 06:38
поделиться

Вы могли бы хотеть посмотреть на Архив:: Tar на CPAN. (Я просто предполагаю, я никогда не использовал его сам.), Почему Вы настаиваете на том, чтобы делать его в Perl?

7
ответ дан 6 December 2019 в 06:38
поделиться

Можно использовать Архив:: модуль Perl Tar, или можно выполнить tar непосредственно.

Если Вы работаете с опцией использования tar от командной строки, используйте флаг-p для сохранения полномочий.

Если Вы буквально просто обращаетесь к tar каталог, я только что выполнил команду непосредственно, Вы не должны использовать Perl. Если необходимо сделать некоторое воображение, обрабатывающее впоследствии, возможно, Вы должны. Это зависит.

3
ответ дан 6 December 2019 в 06:38
поделиться

Это звучит мне как rsync, могло бы быть лучшее решение для этого, но Вы не сказали многое о том, что другие ограничения Вы имеете.

2
ответ дан 6 December 2019 в 06:38
поделиться

Два параметра; имя сжатого файла tar и имя каталога, который вы хотите в файле tar. например,

tarcvf test.tar.gz mydir
#!/usr/bin/perl -w 

use strict;
use warnings 'all';
use Archive::Tar;
use File::Find;


my $archive=$ARGV[0];
my $dir=$ARGV[1];

if ($#ARGV != 1) {
    print "usage: tarcvf test.tar.gz directory\n";
    exit;
}

# Create inventory of files & directories
my @inventory = ();
find (sub { push @inventory, $File::Find::name }, $dir);

# Create a new tar object
my $tar = Archive::Tar->new();

$tar->add_files( @inventory );

# Write compressed tar file
$tar->write( $archive, 9 );
6
ответ дан 6 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: