কাজটি করার জন্য কিছু লেখা খুব কঠিন নয়। এখানে পার্ল স্ক্রিপ্টের একটি উদাহরণ রয়েছে (মডিউলটি সংরক্ষণাগার প্রয়োজন :: লিবারচাইভ :: এক্সএস )।
#!/usr/bin/perl
use strict;
use warnings;
use Archive::Libarchive::XS qw(:all);
die "Usage: $0 in.7z out.tar" unless @ARGV == 2;
my ($infile, $outfile) = @ARGV;
my $in = archive_read_new();
archive_read_support_filter_none($in);
archive_read_support_format_7zip($in);
archive_read_open_filename($in, $infile, 10240) == ARCHIVE_OK
or die "Error opening $infile: ", archive_error_string($in);
my $out = archive_write_new();
archive_write_set_format_ustar($out);
archive_write_open_filename($out, $outfile) == ARCHIVE_OK
or die "Error opening $outfile: ", archive_error_string($out);
while (archive_read_next_header($in, my $entry) == ARCHIVE_OK) {
archive_write_header($out, $entry) == ARCHIVE_OK
or die archive_error_string($out);
while (1) {
my $size = archive_read_data($in, my $buff, 65536);
die archive_error_string($in) if $size < 0;
last if $size == 0;
archive_write_data($out, $buff) >= 0
or die archive_error_string($out);
}
}
archive_read_free($in);
archive_write_close($out);
archive_write_free($out);
আপনি যদি একটি tar.gz / tar.bz2 / লাইন tar.xz সংরক্ষণাগার, যোগ চেয়েছিলেন archive_write_add_filter_gzip($out);
বা archive_write_add_filter_bzip2($out);
বা archive_tar_add_filter_xz($out);
পরে archive_write_set_format
লাইন।
এটি কোনও অস্থায়ী ডিস্ক স্পেস (আউটপুট টার ফাইলের জন্য কেবলমাত্র স্থান) এবং খুব সামান্য র্যাম (পার্লের জন্য মাত্র কয়েক মেগাবাইট) ব্যবহার করে না, তবে এটি ফাইলগুলির সাথে একসাথে একটি ব্লক কাজ করে, তাই আপনার ফাইলগুলি বড় হলে সমস্যা নেই not আপনার র্যামের চেয়ে)।
.7z
অন্য কম্পিউটারে ফাইলটি খুলতে বাধা দিচ্ছে কি ?