বিশাল টিজিজেড ফাইল থেকে একক ফাইল বের করুন


19

আমার কাছে একটি বিশাল টার ফাইল (প্রায় 500 জি) রয়েছে এবং আমি এ থেকে কেবল একটি ফাইল বের করতে চাই না।
যাইহোক, আমি যখন চালনা tar -xvf file.tgz path/to/fileকরি তখন মনে হয় এটি এখনও পুরো বিষয়বস্তুকে মেমরিতে লোড করছে এবং এটি নিষ্কাশন করতে এক ঘন্টা সময় নেয়। আমি --exclude=ignore.txtযেখানে ব্যবহার করার চেষ্টা করেছি সেখানে উপেক্ষা.txt নিষ্ক্রিয় পথগুলি অতিক্রম করা থেকে বিরত করার চেষ্টা করার জন্য নিদর্শনগুলির তালিকা, তবে এটি কার্যকর বলে মনে হচ্ছে না।

সম্ভবত আমি টার বুঝতে পারছি না ... দ্রুত ফাইলটি বের করার কোনও উপায় আছে কি?


আমি একই সম্পর্কে ভাবছি। আমি যে ফাইলটি সন্ধান করছি তা দ্রুত এবং নিষ্কাশিত হয় - এবং তারপরে আমাকে আরও অর্জনের প্রক্রিয়া করার জন্য এক ঘন্টা অপেক্ষা করতে হবে: o (
মাশাশা

উত্তর:


14

দুর্ভাগ্যক্রমে, .tar.gzসংরক্ষণাগারটির একক সদস্যকে আনপ্যাক করার জন্য আপনাকে পুরো সংরক্ষণাগারটি প্রক্রিয়াকরণ করতে হবে, এবং এটি ঠিক করার জন্য আপনি খুব বেশি কিছু করতে পারবেন না।

এখানে .zip(এবং অন্যান্য ফর্ম্যাটগুলির মতো .rar) সংরক্ষণাগারগুলি আরও ভালভাবে কাজ করে, কারণ zipফর্ম্যাটটিতে সমস্ত ফাইলের কেন্দ্রীয় ডিরেক্টরি রয়েছে যা ফাইলের মাঝখানে নির্দেশ করে সরাসরি অফসেট zipথাকে, সুতরাং আর্কাইভ সদস্যদের পুরো জিনিসটি প্রক্রিয়াজাত না করে দ্রুত বের করা যায়।

আপনি জিজ্ঞাসা করতে পারেন কেন প্রসেসিং .tar.gzএত ধীর?

.tar.gz(প্রায়ই যেমন সংক্ষিপ্ত .tgz) কেবল হয় .tarসাথে সংকুচিত সংরক্ষণাগার gzipসংকোচকারী। gzipস্ট্রিমিং কমপ্রেসার যা কেবল একটি ফাইলের সাথে কাজ করতে পারে। আপনি কোন অংশ পেতে চান gzipস্ট্রিম, আপনি একটি সম্পূর্ণ যেমন কমপ্রেস করতে হবে, এবং এই কি সত্যিই এটা নিহত হয় .tar.gz(এবং জন্য .tar.bz2, .tar.xzএবং অন্যান্য অনুরূপ ফরম্যাটের উপর ভিত্তি করে .tar)।

.tarফর্ম্যাট আসলে খুব খুব সহজ। এটি কেবল 512-বাইট ফাইল বা ডিরেক্টরি শিরোনাম (নাম, আকার, ইত্যাদি) এর স্ট্রিম, প্রতিটি ফাইল বা ডিরেক্টরি বিষয়বস্তু অনুসরণ করে (প্রয়োজনীয় হলে 0 বাইট সহ 512 ব্লকের আকারে প্যাড করা)। আপনি যখন শিরোনামের জন্য সম্পূর্ণ নাল 512 ব্লকটি পর্যবেক্ষণ করেন, এর অর্থ .tarসংরক্ষণাগার সমাপ্তি ।

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


3
জিজিপ অসম্পৃক্ত ডেটা প্রবাহিত করতে পারে, এটি পুরো জিনিসটিকে পূর্বাবস্থায় ফিরিয়ে আনতে হবে না। তবে, যেহেতু .tar টেপ সংরক্ষণাগারটির জন্য সংক্ষিপ্ত, আপনার সন্ধান করা ফাইলটি না পাওয়া পর্যন্ত আপনাকে পুরো ফাইলটি অতিক্রম করতে হবে। যদিও অন্যটি থাকতে পারে তার কারণ দেখতে থাকবে, পরবর্তীতে ট্যারে ফাইলটিতে অনুলিপি করুন।

9

যদি আপনি একটি বড় টর ফাইল থেকে কেবল একটি ফাইল বের করছেন, আপনি জিএনইউ ব্যবহার করছেন tar, এবং আপনি গ্যারান্টি দিতে পারবেন যে টার ফাইলটি কখনও সংযুক্ত করা হয়নি তবে আপনি ব্যবহার করে একটি উল্লেখযোগ্য পারফরম্যান্স উত্সাহ পেতে পারেন --occurrence

এই বিকল্পটি টারকে আপনার অনুরোধ করা প্রতিটি ফাইলের প্রথম উপস্থিতি খুঁজে পাওয়ার সাথে সাথে থামতে বলেছে, উদাহরণস্বরূপ

tar xf large-backup.tar --occurrence etc/passwd etc/shadow

এটি প্রতিটির একটি অনুলিপি খুঁজে পাওয়ার পরে পুরো টার্বলটিতে স্পুল হবে না passwdএবং shadowপরিবর্তে এটি বন্ধ হয়ে যাবে। এই ফাইলগুলি যদি শেষের দিকে উপস্থিত হয় তবে পারফরম্যান্স লাভ খুব বেশি হবে না, তবে যদি 500G ফাইলের মধ্য দিয়ে এমনকি যদি এটি অর্ধেক উপায়ে প্রদর্শিত হয় তবে আপনি অনেক সময় সাশ্রয় করবেন।

ব্যবহার মানুষের জন্য tarএবং একক শট ব্যাক-আপের জন্য বাস্তব টেপ ড্রাইভ ব্যবহার করছেন না এই পরিস্থিতি সম্ভবত টিপিক্যাল ক্ষেত্রে দেখা যায়।

নোট আপনার কাছে প্রেরণ করতে পারেন যে --occurrence=NUMBERপ্রতিটি ফাইল, যা সাহায্য করে আপনি যদি জানেন যে এর NUMBERth সংঘটন পুনরুদ্ধার করতে হয় সংরক্ষণাগারে একাধিক সংস্করণ। ডিফল্টরূপে আচরণ NUMBER1 এর সমান ।


টার তৈরি করার কোনও উপায় কি যাতে কোনও নির্দিষ্ট ফাইলটি সবার আগে প্রকাশিত হয়? যাতে --occurrenceপ্রথম ফাইলের সাথে সাথেই শুরু হবে? আমি অনুমান করছি এটি ফাইলের নামগুলি সম্পর্কে, তাই aaaaa.jpg নামক কোনও কিছু উদাহরণ হিসাবে প্রথম প্রকাশিত হবে?
জেফ

1
@ জেফ: আসলে না। এটি কেবল tarখুঁজে পাওয়া কোনও ফাইলের নতুন সংস্করণগুলির জন্য টার্বল অনুসন্ধান চালিয়ে যাওয়া থেকে বিরত থাকে। পরিবর্তে এটি ফিরে আসে, যেমন ম্যান পৃষ্ঠাটি বলেছে the Nth occurrence,। আপনি উল্লেখ করেন এক কমান্ড লাইন নির্যাস ফাইল এবং আপনি বলতে --occurrenceতারপর আলকাতরা যত তাড়াতাড়ি বন্ধ হয়ে যাবে যেমন যে ফাইল খুঁজে পেয়েছে, এবং এইভাবে কার্যকরভাবে থামবে "প্রথম ফাইলটি।"
phogg

2

একটি বড় টারবাল ব্যবহারের সাথে ডিল করার সময়:

--fast-readpath/to/fileএই ক্ষেত্রে ফাইল নাম অপারেণ্ডের সাথে মেলে কেবল প্রথম সংরক্ষণাগার এন্ট্রি নিষ্কাশন করতে - যা যাইহোক তারবালের ক্ষেত্রে সর্বদা অনন্য

tar -xvf file.tgz --fast-read path/to/file

উপরেরটি কোনও মিল খুঁজে না পাওয়া পর্যন্ত অনুসন্ধান করবে এবং তারপরে প্রস্থান করবে


1
আমি বুঝতে চাইছিলাম কেন এটি এখনও 0 পয়েন্টে রয়েছে। man tar(জিএনইউ টার 1.29) এমনকি এই বিকল্পটি মুদ্রণ করে না। তবে উবুন্টু এটি ডিফল্টরূপে সক্ষম করেছে বলে মনে হচ্ছে । দ্রুত পড়া, আমি নিশ্চিত না যে কি --fast-readথেকে আলাদা হয় --occurrence। তবে --occurrenceউবুন্টু পাতায়ও নয়, এটি রয়েছে man tar। হয় --fast-readএবং --occurrenceএকই জিনিস সম্ভবত?
জেফ

এই বিকল্পগুলির কোনওটিই স্ট্যান্ডার্ড দ্বারা নির্দিষ্ট করা হয়নি এবং সর্বদা অ-মানক বিকল্পগুলির সাথে, আপনার সিস্টেমের ইউটিলিটি সেগুলি সমর্থন করে তা নিশ্চিত হওয়ার জন্য অবশ্যই যত্ন নেওয়া উচিত। --Occurrences বিকল্পটি GNU টার দ্বারা সমর্থিত। - ব্রেকফাস্ট-রিড অপশনটি ফ্রিবিএসডি টারের সাম্প্রতিক সংস্করণ দ্বারা সমর্থিত, উবুন্টু দ্বারা বিএসডিটার হিসাবে প্যাকেজ করা। আরও জন্য এখানে দেখুন।
phogg

1

দুর্ভাগ্যক্রমে, টার ফাইল ফর্ম্যাটটিতে কোনও বিষয়বস্তুর কেন্দ্রিকীকরণ সারণি নেই - সুতরাং কোনও নির্দিষ্ট ফাইল সনাক্ত করতে সংরক্ষণাগারটি ক্রমানুসারে পড়তে হবে। এটি মূলত টেপ ব্যাকআপের জন্য তৈরি করা হয়েছিল ("টার" টি টি এপ আর চিভ থেকে এসেছে ), যা কোনও ক্ষেত্রেই এই জাতীয় ক্রিয়াকলাপ সমর্থন করে না।

সুতরাং, আপনাকে সম্ভবত অপেক্ষা করতে হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.