Perlと。でフォルダ全体をrarしたいArchive::Rar
。たとえば、フォルダ/root/pictures
。
私は単一のファイルをrarする方法しか見つけませんでした。
/root/pictures
フォルダ内のすべてのファイルを見つけてrarを実行しようとしましたが、rarアーカイブでは常にパス全体がそれらに固定されています( )。
/pictures
フォルダとその内容だけが必要です。それは可能ですか?
Perlと。でフォルダ全体をrarしたいArchive::Rar
。たとえば、フォルダ/root/pictures
。
私は単一のファイルをrarする方法しか見つけませんでした。
/root/pictures
フォルダ内のすべてのファイルを見つけてrarを実行しようとしましたが、rarアーカイブでは常にパス全体がそれらに固定されています( )。
/pictures
フォルダとその内容だけが必要です。それは可能ですか?
アーカイブに保存されるファイルのフォルダー構造は、メソッドに渡すファイル名と同じになりますAdd
。(ただし、オプションを使用して、フォルダーをまったく含まずにそれらを追加でき-excludepaths
ます。)
ファイルをアーカイブに追加する前chdir
に\root
ディレクトリに移動し、すべてのファイルをpictures\file1.jpg
etc. として指定すると、結果は希望どおりになります。
このようなもの
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 ファイル名にパスを追加できます。
最初に、定義されたディレクトリからファイルのリストを取得する必要があります。
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,
);