এটি খুব কঠিন হওয়া উচিত নয়, অন্তত পুরানো স্টাইলের ফর্ম্যাটের সাথে সামঞ্জস্যপূর্ণ সংরক্ষণাগারগুলির জন্য যেখানে ফাইলের নামগুলি একটি নির্দিষ্ট আকারের (100 বাইট) ক্ষেত্রে সংরক্ষণ করা হয়, তবে আমি কোনও সরঞ্জাম জানি না যা একটি নাম পরিবর্তন করতে পারে একটি টার সংরক্ষণাগার জায়গায় ফাইল। এছাড়াও, একটি সংকুচিত সংরক্ষণাগার সহ, আপনাকে যে কোনও উপায়ে একটি নতুন ফাইল তৈরি করতে হবে।
এটি আরও সহজ হওয়া উচিত, তবে আমি কোনও বিদ্যমান সরঞ্জাম সম্পর্কে জানি না যা কোনও সংরক্ষণাগার ফিল্টার করতে পারে, ফাইলগুলি যেমন হয় তেমন নামকরণ করে। আপনি স্ক্রিপ্টিং ভাষাগুলিতে টার লাইব্রেরির উপরে একটি তৈরি করতে পারেন; উদাহরণস্বরূপ, পার্লটি দিয়ে পার্লArchive::Tar
ব্যবহার করে একটি টার্ক আর্কাইভের ডিরেক্টরিটির নতুন নামকরণের জন্য এখানে একটি প্রুফ অফ অফ কনসেপ্ট স্ক্রিপ্ট রয়েছে । সংরক্ষণাগারটি পুরোপুরি স্মৃতিতে লোড হয়; এটি একটি অন্তর্নিহিত সীমাবদ্ধতা Archive::Tar
।
#!/usr/bin/env perl
## Usage: tar-rename OLDPREFIX NEWPREFIX
use strict;
use warnings;
use Archive::Tar;
my ($from, $to) = @ARGV;
my $tar = Archive::Tar->new(\*STDIN);
foreach my $file ($tar->get_files()) {
my $name = $file->name;
$name =~ s~\A\Q$from\E($|/)~$to$1~;
$file->rename($name) unless $name eq $file->name;
}
$tar->write(\*STDOUT);
জিএনইউ টারে ফ্লাইতে সদস্যদের নাম পরিবর্তন করার ক্ষমতা নেই, তবে pax
(পসিক্সের প্রতিস্থাপন cpio
এবং এর জন্য tar
) রয়েছে। তবে আপনি pax
সংরক্ষণাগার থেকে পড়া এবং লেখার জন্য উভয়ই তৈরি করতে পারবেন না । আপনি যা করতে পারেন তা হ'ল আর্কাইভটি এভিএফএসের মাধ্যমে নিয়মিত গাছ হিসাবে প্রকাশ করা এবং এর সাহায্যে একটি নতুন সংরক্ষণাগার তৈরি করা pax
। এটি ফাইলের নাম (রূপান্তরিত হিসাবে বাদে), বিষয়বস্তু, সময় এবং মোডগুলি ধরে রাখে তবে আপনার কাছে ফাইলের মালিকানা পুনরায় সেট করে (যতক্ষণ না মূল হিসাবে চালিত)।
mountavfs
cd "~/.avfs$PWD/old.tgz#"
pax -w -s '!bar!baz!' -s '!bar/!baz/' . | gzip >new.tgz