ডিরেক্টরি কাঠামো ছাড়া .tar ফাইল


32

আমি .tarপথ দিয়ে কিছু ফাইল আইএনজি করছি example/super_user/Output.*

ফলাফলগুলি .tarদেখতে এরকম দেখাচ্ছে:

+ example
    + super_user
          - Output.zip
          - Output.xml
          - Output.txt

তবে আমি ফাইলটি নিম্নলিখিতগুলির মতো হতে চাই:

- Output.zip
- Output.xml
- Output.txt

আপনি কি জানেন যে অন্য ডিরেক্টরিতে থাকা অবস্থায় আমি কীভাবে এটি অর্জন করতে পারি?


সেরকম সংরক্ষণাগারগুলির সাথে টারবম্বগুলি এড়াতে ভুলবেন না ।
মাধ্যাকর্ষণ

তার - স্ট্রিপ-উপাদানগুলি = 1000?
জার হাই

উত্তর:


11

টার ফাইল এবং ফোল্ডার কাঠামো সংরক্ষণ করবে তাই আমি মনে করি না সৃষ্টির সময় শ্রেণিবিন্যাসকে সমতল করার জন্য টার নির্দেশ দেওয়ার কোনও উপায় নেই।

একটি কাজ হ'ল অস্থায়ীভাবে ডিরেক্টরি পরিবর্তন করা, টার তৈরি করা এবং তারপরে ফিরে যান - নীচে একটি দ্রুত উদাহরণ:

cd example/super_user && tar -cvf ../../result.tar Output.* && cd ../..

27

ডিরেক্টরি যদি 'উদাহরণস্বরূপ' ফাইল সিস্টেমের মূলের হয় তবে এখানে আরও একটি উপায় রয়েছে:

tar -C /example/super_user -cvf result.tar .

এটি ডিরেক্টরিটি বিন্দুতে বদলে দেবে যে আপনি টারটি করতে চান। সতর্কতাটি হ'ল যদি / উদাহরণ / সুপার_উজারের অধীনে কোনও উপ-ডিরেক্টরি থাকে তবে ডিরেক্টরি কাঠামোটি এই সাব-ডিরেক্টরিগুলির জন্য সংরক্ষণ করা হবে।


1
এটি হ'ল সমস্যাটির উত্তর। উল্লিখিত সাবধানবাণী এই ক্ষেত্রে কোনও সমস্যা নয়। অন্যান্য সমস্ত উত্তর সমস্যাটির বিভিন্নতার জন্য অ্যাকাউন্টে কাজ করে।
জোকি

সত্যই এই প্রশ্নের সমাধান। ডিরেক্টরিটি মূল হতে হবে না, অনুমান করে ডিরেক্টরি কাঠামো /home/u/foo/bar, ডিয়ার কাজ করছে /home/b, তাহলে tar -C foo/bar -cvf qiz.tar .ভাল কাজ করে। এক সতর্কীকরণ যদিও, আপনি ওয়াইল্ডকার্ড ব্যবহার করতে পারবেন না, অর্থাত্ tar -C foo/bar -cvf qiz.tar *.log, tar -C foo/bar -cvf qiz.tar "*.log"বা tar -C foo/bar -cvf qiz.tar "foo/bar/*.log"কাজ করবে না।
ব্রিস

1
এটি লক্ষ করা উচিত যে আপনি যদি একাধিক ডিরেক্টরিতে ছড়িয়ে থাকা একাধিক ফাইল যুক্ত করতে চান তবে আপনি তার ফাইলটি সমতল হতে চান তবে আপনি -Cএকক tarকমান্ডে একাধিকবার ব্যবহার করতে পারেন ।
শূন্য298

10

আমি আমার উত্তর এখানে পোস্ট করেছি:

https://stackoverflow.com/questions/13924856/unix-tar-do-not-preserve-directory-structure

পুনরায় পোস্ট করুন (অলস পিপিএল জন্য)


এটি কুৎসিত ... তবে এটি কাজ করে ...

আমার একই সমস্যা ছিল কিন্তু একাধিক ফোল্ডার সহ আমি কেবল প্রতিটি ফাইল সমতল করতে চেয়েছিলাম। সেড এক্সপ্রেশন পাস করার জন্য আপনি "ট্রান্সফর্ম" বিকল্পটি ব্যবহার করতে পারেন এবং এটি প্রত্যাশা অনুযায়ী কাজ করে।

এটি প্রকাশ:

's/.*\///g' ('/' এর আগে সমস্ত কিছু মুছুন)

এটি চূড়ান্ত আদেশ:

tar --transform 's/.*\///g' -zcvf tarballName.tgz */*/*.info


7

কোনও প্যারেন্ট ডিরেক্টরি তথ্য (এমনকি। / নয়) ছাড়াই ডিরেক্টরি (ডিআরআইআর) থেকে সমস্ত ফাইল সহ একটি টর্ (আর্কাইভ.আটার) তৈরি করতে আপনি এই জাতীয় কিছু ব্যবহার করতে পারেন:

find "DIR" -type f -printf "%f\n" | xargs tar cf ARCHIVE.tar -C "DIR"

গভীরতা সীমাবদ্ধ করতে, নির্দিষ্ট ফাইলগুলি এবং আরও অনেক কিছুর জন্য আপনি অনুসন্ধানের সাথে খেলতে পারেন।

শুভকামনা!


আমি ওএসএক্স সন্ধান কমান্ডে "সন্ধান: -প্রিন্টফ: অজানা প্রাথমিক বা অপারেটর" পাচ্ছি। কোন টিপস?
টিসিবি

-printfএটি একটি মানহীন কমান্ড। এগুলির মধ্যে অনেকেই কেবলমাত্র অনুসন্ধানের নির্দিষ্ট সংস্করণ নিয়ে কাজ করেন। সাধারণত আমরা সুপার ইউজারে কোনও প্রশ্নের উত্তর দেওয়ার সময় তাদের চিহ্নিত করি (উদাহরণস্বরূপ "-ব্লাহ একটি জ্ঞান এক্সটেনশন এবং সর্বত্র কাজ করবে না")।
হেনেস

3

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


1

যদি সেগুলি টার্বল এর সম্পূর্ণ বিষয়বস্তু হয় তবে আপনি --strip-componentsফাইলগুলির আগে দুটি স্তর অপসারণ করতে GNU টার বিকল্প ব্যবহার করতে পারেন ।


আমি কেবল বিকল্প পেয়েছি --strip-pathকিন্তু এটি ব্যবহার করে কোনও পরিবর্তন হবে না।

1

অস্থায়ী পরিবর্তন ডিরেক্টরিটির আর একটি উপায় হ'ল বন্ধনীতে কমান্ডগুলি cdএবং tarকমান্ডগুলি রাখা ( ):

(cd example/super_user; tar -cvf ../../result.tar *)

এর সুবিধাটি হ'ল, ব্লকটি করা হয়ে গেলে আপনি সর্বদা স্পষ্টভাবে মূল ডিরেক্টরিতে ফিরে যান। যেমন pushd.. popdব্লক বা কোথায় cdফিরে যেতে হবে তার ট্র্যাকিংয়ের দরকার নেই ।


0
pushd example/super_user
tar -cf output.tar Output.*
popd

পুশড বর্তমান ডিরেক্টরি পথটিকে DIRস্ট্যাকের দিকে ঠেলে দেয় এবং সামগ্রী ফোল্ডারে চলে যায়। তারপরে, আপনি ব্যবহার করে মূল ডিরেক্টরিতে ফিরে যান popd

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