কীভাবে একাধিক ফাইলগুলিতে টার সংরক্ষণাগার বিভক্ত করা যায়?


27

এই পৃষ্ঠা অনুসারে , কেউ একটি টার আর্কাইভকে 100 এমবি ফাইলগুলিতে "বিভক্ত" তৈরি করতে দেয়:

tar -c -M --tape-দৈর্ঘ্য = 102400 - ফাইল = ডিস্ক 1.এটি লার্জফিল.টিজিজেড

সমস্যাটি হ'ল এই আদেশটি আপনাকে প্রথম ফাইলটি পূরণ করার পরে পরের ফাইলটির জন্য ইন্টারেক্টিভভাবে একটি নতুন ফাইলের নাম দিতে হবে।

এই ইন্টারেক্টিভ পদক্ষেপটি এড়িয়ে যাওয়ার কোনও উপায় যে কেউ জানেন, এবং তারটি স্বয়ংক্রিয়ভাবে "বিভাজন" করতে দেয়?


উত্তর:


20

--new-volume-scriptবিকল্পটি একবার দেখুন , যা আপনাকে অনুরোধ ব্যবস্থাকে ভিন্ন ব্যবস্থার সাথে বা উত্পন্ন ফাইলের নামের সাথে প্রতিস্থাপন করতে দেয়। ( (tar.info)Multi-Volume Archivesমধ্যে tarinfo পৃষ্ঠায়।) সঙ্গে সমস্যা splitযে আপনি প্রয়োজন বোধ করেন catটুকরা কিছু করতে ফিরে একসঙ্গে, যেহেতু একটি multivolume সংরক্ষণাগার একটি বিট আরো নমনীয় হতে হবে।


অবশ্যই এটি সত্য।
এডুয়ার্ডো I.

2
ধন্যবাদ, আমি এটিই খুঁজছিলাম! আমি এখন জানতে পেরেছি যে এখানে আসলে কিছু নির্দেশাবলী রয়েছে (উদাহরণস্বরূপ) এখানে উপলব্ধ: gnu.org/software/tar/manual/tar.html# ব্যবহার- মাল্টিপল- ট্যাপস
স্যামুয়েল লাম্পা

এটির সাথে সমস্যাটি হ'ল এটি অত্যধিক বাজে জালিয়াতিতে জড়িত এবং সঠিক ইউনিক্স শৈলীর অ্যাপ্লিকেশনগুলির বিপরীতে প্রচার করে।
জানু কিউ পেবলিক

33

আপনি এর জন্য বিভক্ত ব্যবহার করতে পারেন:

tar czpvf - /path/to/archive | split -d -b 100M - tardisk

এটি স্টারআউটকে ডেটা প্রেরণ করতে স্টারকে বলে, এবং এটি স্টিডিন থেকে বাছাইয়ের জন্য পৃথক করে - অতিরিক্তভাবে 100 এম এর একটি সংখ্যার প্রত্যয় ( -d), একটি মাপের আকার ( -b) ব্যবহার করে এবং ফলাফল ফাইলের নামের জন্য 'টার্ডিস্ক' ব্যবহার করে (tardisk00, tardisk01, tardisk02, ইত্যাদি)।

পরে ডেটা উত্তোলন করতে আপনি এটি ব্যবহার করতে পারেন:

cat tardisk* | tar xzpvf -

1
ছোট সংশোধন, -dসংখ্যার প্রত্যয় জন্য, উপসর্গের জন্য নয়।
ইলিয়ানিয়ান

8

অবশ্যই ব্যবহারের সেরা বিকল্পটি হ'ল --new-volume-scriptবিকল্প।

তবে, যদি আপনি ফাইলটির আকার জানেন (তবে এই ক্ষেত্রে বৃহত ফাইল.টিজিজেড), তবে আপনি এটিও করতে পারেন:

tar -c -M -L 102400 --file=disk1.tar --file=disk2.tar --file=disk3.tar largefile.tgz

সারাংশ:

-c = Create
-M = multi-volume
-L 102400 = 100MB files (disk1.tar, disk2.tar, disk3.tar ...)

(-এল এর জন্য, প্রয়োজনীয় যতগুলি নির্দিষ্ট করুন যাতে টার ফাইলগুলির মোট যোগফল লার্জফিল.টিজিজেডের চেয়ে বড় হয়)

আপনি যদি tarকোনও ডিরেক্টরি গাছের কাঠামোর চেষ্টা করছেন


1

আমি এটি নিম্নলিখিত কমান্ডগুলির সাথে কাজ করতে পেরেছি:

mkdir -p ./split
rm -rf ./split/*
tar -cML 102400 -F 'cp "${TAR_ARCHIVE}" \
    ./split/part_${TAR_VOLUME}.tar' \
    -f split/part_1.tar large_file.tar.gz

কেবলমাত্র সমস্যাটি হ'ল এটি part_1.tarআসলে শেষ ফাইল হবে এবং অন্যগুলি একে একে স্থানান্তরিত হবে। অর্থাত part_2.tarআসলে প্রথম অংশ, এবং part_k.tarহয় (n - 1)তম অংশ। এটি কয়েকটি শেল স্ক্রিপ্টের সাথে সংশোধন করা তুচ্ছ, এবং পাঠকের জন্য অনুশীলন হিসাবে রেখে দেওয়া।


1

এটি স্বয়ংক্রিয়ভাবে আকারের ফাইলগুলি ১.১ জিবি তৈরি করবে, যদি আপনার টার আকার আকারে বড় হয় তবে আপনি সংখ্যাটি বাড়িয়ে নিতে পারেন, উদাহরণস্বরূপ 1000 {2..1000} বা আপনি টেপ-দৈর্ঘ্যের আর্গুমেন্টে ইনপুট বাড়িয়ে তুলতে পারেন।

tar --tape-length=1048576 -cMv --file=tar_archive.{tar,tar-{2..100}} backup.tar.lzma
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.