0

Perlと。でフォルダ全体をrarしたいArchive::Rar。たとえば、フォルダ/root/pictures

私は単一のファイルをrarする方法しか見つけませんでした。

/root/picturesフォルダ内のすべてのファイルを見つけてrarを実行しようとしましたが、rarアーカイブでは常にパス全体がそれらに固定されています( )。

/picturesフォルダとその内容だけが必要です。それは可能ですか?

4

2 に答える 2

1

アーカイブに保存されるファイルのフォルダー構造は、メソッドに渡すファイル名と同じになりますAdd。(ただし、オプションを使用して、フォルダーをまったく含まずにそれらを追加でき-excludepathsます。)

ファイルをアーカイブに追加する前chdir\rootディレクトリに移動し、すべてのファイルをpictures\file1.jpgetc. として指定すると、結果は希望どおりになります。

このようなもの

use strict;
use warnings;

use Archive::Rar;

use autodie;

chdir '\root';

my $rar = Archive::Rar->new(-archive => 'pictures.rar');

$rar->Add(-files => [ glob 'pictures\*' ]);

アーカイブを別の場所に保存したい場合は、rar ファイル名にパスを追加できます。

于 2013-01-20T15:39:32.217 に答える
0

最初に、定義されたディレクトリからファイルのリストを取得する必要があります。

use File::Find;

my @content;
find( \&wanted, '/some/path');

sub wanted {
  push @content, $File::Find::name;
  return;
}

その後、Archive::Rar を使用してパックすることができます。

use Archive::Rar;
my $rar = Archive::Rar->new();
$rar->Add(
       -size => $size_of_parts,
       -archive => $archive_filename,
       -files => \@content,
);
于 2013-01-19T18:12:35.057 に答える