'টার' কমান্ড ব্যবহার করে কীভাবে অন্য ডিরেক্টরিতে ফাইলগুলি এক্সট্রাক্ট করা যায়?


672

আমি ভেবেছিলাম tar archive.tar /users/mylocationকাজ করবে, তবে তা হয় না। আমি এটা কিভাবে করবো?


1
এছাড়াও, -C, --directory DIR\n change to directory DIRবরং হিসাবে বর্ণনা করা উচিত change output directory to DIR (will fail if DIR doesn't exist)। ধন্যবাদ @ মিচ @ ব্রায়ান_লারসেনের উত্তরও দেখুন।
বৈধ

1
@ উজ্জ্বল গাও: প্রকৃতপক্ষে, টার ম্যান পৃষ্ঠাটি তেমন সহায়ক নয়। এটি "-সি ডিআইআর" কে "ডিরেক্টরি ডিআইআর-তে পরিবর্তন" হিসাবে বর্ণনা করে। আরও খারাপ: "টার-সি মায়াদির এক্সএফ আর্কাইভ.এটার" কাজ করে না, যখন "টার এক্সএফ আর্কাইভ.এটার-সি মাইডির" করে।
প্যাট মরিন

@ পেটমোরিন ন্যায্য হওয়ার জন্য, আপনি যখন যুক্তি আহ্বানের কনভেনশনগুলি ব্যবহার করছেন তখন তা বুঝতে পারবেন। আপনিও করতে পারেন tar xfC archive.tar mydirবা করতে পারেন tar -C mydir -xf archive.tar। এটি কেবল traditionalতিহ্যবাহী-শৈলীর এবং জিএনইউ-স্টাইলের পতাকাগুলির সাথে মিশে যা জিনিসগুলিকে ভেঙে দেয়, যেমন ... সত্যই প্রত্যাশিত of Argumentতিহ্যবাহী পতাকাগুলি প্রথম যুক্তি হিসাবে সমস্ত একটি ব্লব হিসাবে পাস হয়। আপনি যদি তাদের প্রথম না হন তবে কাজ করার আশা করতে পারবেন না। (আমি বলতে চাই, হ্যাঁ, যাইহোক এটির ব্যাখ্যা করা সম্ভব - আমার
বক্তব্যটি

উত্তর:


958

বর্তমান থেকে পৃথক ডিরেক্টরিতে একটি সংরক্ষণাগার আহরণ করতে , হিসাবে -C, বা --directory, টার বিকল্পটি ব্যবহার করুন

tar -xf archive.tar -C /target/directory

নোট করুন যে কমান্ডটি চালানোর আগে লক্ষ্য ডিরেক্টরি উপস্থিত থাকতে হবে (এটি দ্বারা তৈরি করা যেতে পারে mkdir /target/directory)।

অন্যান্য বিকল্পের জন্য ম্যানুয়াল পৃষ্ঠা (কমান্ড man tar:) পড়ুন ।


পাথটি ছিনিয়ে নেওয়া যায়: অর্থাত্ ফাইলটি পুনরুদ্ধার করুন
জাজাপার

3
যদি এটি কোনও বৃহত্তর ফাইল হয়, আপনি যখন কমান্ডটি চালাবেন, কাজটি করার সময় আপনি যা কিছু পান তা বেশ কয়েক সেকেন্ড বা এমনকি মিনিটের জন্য আউটপুট হয় না। আপনি -vপতাকাটি ( ভার্বোস মোড ) যোগ করে এটি ঠিক করতে পারেন যা প্রতিটি ফাইলের নাম তালিকাভুক্ত করার সাথে সাথে তালিকাভুক্ত করে।
আইকিউআন্দ্রিয়াস 7'15

যদি আপনার এটি নিয়ে সমস্যা হয় --strip-components=1তবে অন্যান্য উত্তরের পরামর্শটিও নোট করুন ।
ড্র্যাডপাইরেটশাহন


9
আশ্চর্যজনক নয় যে এত বছর পরেও, সমস্ত অপশন tarজমে থাকা সত্ত্বেও, যদি এখনও উপস্থিত না থাকে তবে আউটপুট ডিরেক্টরি তৈরি করার বিকল্প নেই ?
EM0

260

মনে রাখবেন যে আপনার টারবালটিতে ইতিমধ্যে আপনি যে ডিরেক্টরিটির নাম পরিবর্তন করতে চান তা অন্তর্ভুক্ত থাকলে --strip-components=1বিকল্পটি যুক্ত করুন:

tar xf archive.tar -C /target/directory --strip-components=1

2
ধন্যবাদ. উইজেট / ইত্যাদির মাধ্যমে ডাউনলোডগুলির সর্বদা একটি 'প্যারেন্ট' ডিরেক্টরি থাকে। এটি সম্পূর্ণ উত্তর ইমো - বা উপরের উত্তরে লক্ষ করা উচিত।
bshea

শুধু আমি যা খুঁজছিলাম। --strip-componentsবিভিন্ন সংস্করণ ব্যবহার করতে পারে এমন প্রভিজারগুলি চালানোর সময় এমন দরকারী। এই পদ্ধতি /target/directoryএকটি জেনেরিক নাম হতে পারে, কিভাবে প্রদানকারী তাদের সংরক্ষণাগার ফোল্ডার নাম বেছে চিন্তা না করেও।
জ্যাকহু

30

পূর্ববর্তী উত্তর এবং মন্তব্যগুলির সংমিশ্রণ:

নিখরচায় বিষয়বস্তুগুলি বের করতে এবং লক্ষ্য ডিরেক্টরিটি অনুপস্থিত থাকলে তা তৈরি করতে:

mkdir -p /target/directory && tar xf archive.tar -C /target/directory

জিপের মূল (প্রথম স্তর) ডিরেক্টরিটি নিষ্কাশন করতে এবং অপসারণ করতে

mkdir -p /target/directory && tar xf archive.tar -C /target/directory --strip-components=1

20

আরেকটি বিকল্প হ'ল - এক-শীর্ষ-স্তরের ব্যবহার। এটি স্বয়ংক্রিয়ভাবে মূল ফাইলটির নামের উপর ভিত্তি করে একটি ডিরেক্টরি তৈরি করবে।

tar zxvf filename.tgz --one-top-level

অতিরিক্ত হিসাবে আপনি চাইলে, আপনি নিজের নির্দিষ্ট করতে পারেন এবং টার এটি স্বয়ংক্রিয়ভাবে তৈরি করবে।

tar zxvf filename.tgz --one-top-level=new_directory

3
আমি জিএনইউ ট্যার ১.২ using ব্যবহার করছি এবং আমি এর জন্য একটি অবিশ্বাস্য বিকল্প ত্রুটি পেয়েছি--one-top-level
এমা স্ট্রুবেল

এটি আমার জবাব দরকার। ডিরেক্টরিটির নাম উল্লেখ করতে বা "বিশেষ" কোডটি মনে রাখবেন যা নামের জন্য ফাইলটি আবার উল্লেখ করবে খুব দরকারী "না"। ধন্যবাদ.
হাইপোক্রিটাস

2

নিষ্কাশন সংক্রান্ত ক্ষেত্রে যা আমি আকর্ষণীয় পেয়েছি তা হ'ল এটি আপনি আর্কাইভটি কীভাবে তৈরি করেছিলেন তা নির্ভর করে, উদাহরণটি দেখুন

cd /tmp
mkdir folder
touch folder/file.txt

যখন আপনি tar -zcvf folder.tar.gz folderসবকিছু করেন প্রত্যাশিত হিসাবে = যখন আপনি এটি অনার্ট করবেন এখন এটি অনারিকারিত হবে (ফোল্ডারটি তৈরি করা হবে, আপনি যদি এটি সরিয়ে ফেলে থাকেন) হিসাবে /tmp/folder/

তবে, আপনি যখন tar -zcvf tmp-folder.tar.gz /tmp/folderটারটি তৈরি করবেন এবং আপনি এটি / টিএমপি ফোল্ডারে অনার্স করবেন তখন ফলাফলটি /tmp/tmp/folderডিরেক্টরি হবে! সেক্ষেত্রে আপনাকে এটিকে / - থেকে অনার্স করতে হবেtar -xf tmp-folder.tar.gz -C /


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