আমি বর্ণানুক্রমিক ক্রমে একটি টার ফাইল কীভাবে তৈরি করব?


22

আমি একটি টার ফাইল তৈরি করতে চাই যেখানে সমস্ত ডিরেক্টরি এবং ফাইল বর্ণানুক্রমিক ক্রমে প্রক্রিয়াজাত হয়। এটি সম্পূর্ণ ডিরেক্টরি হায়ারার্কির জন্য যা নির্ধারিত হচ্ছে, সুতরাং এটি প্রথম ডিরেক্টরিটি বর্ণানুক্রমিকভাবে প্রক্রিয়া দ্বারা শুরু করা হবে, এবং তারপরে সেখানে বর্ণ ডিরেক্টরি অনুসারে উপ-ডিরেক্টরিগুলি ইত্যাদি। আমি ম্যান পৃষ্ঠাটি দেখেছি এবং এর জন্য কোনও স্যুইচ খুঁজে পাচ্ছি না।

আমি স্বীকার করব, এটি অর্ধ নতুনত্ব, অর্ধেক সামান্য অপ্টিমাইজেশন। আমি বিশ্বাস করতে পারি না যে এটি করার সহজ উপায় নেই। আমি নিশ্চিত কিছু একটা ভুলে যাচ্ছি।


2
আপনি কেন এটা করতে চান?
ম্যাথিয়াস ক্রল 15

বেশিরভাগ ক্ষেত্রেই, কারণ আমি জানতে চাই যে টার অপারেশনটি কতটা সমাপ্ত হচ্ছে। ফাইলগুলি এলোমেলো ক্রমে লোড করা হচ্ছে, -v পতাকা সহ বলার উপায় নেই।
এরিক রবার্টসন

2
এটি সম্পূর্ণ সত্য নয়; যদি আপনি কোনও ফাইলটিতে আউটপুটটি পাইপ করেন এবং ফাইলগুলির সংখ্যা জানেন (দ্রুত সন্ধানের আদেশটি বলুন), আপনি -v আউটপুট (ডাব্লুসি-এল) এর সাথে তুলনা করতে পারেন ফাইলের সংখ্যার সাথে অগ্রগতির ধারণা পেতে ...
স্লাটিবার্টফেষ্ট

2
@ মথিয়াসস্ক্রুল এর সাথে আমার সম্পর্কযুক্ত কারণ নেই, আমি ভিএমওয়্যার ইএসএক্স সার্ভারে ভিএম স্থাপনার জন্য একটি ওভিএ ফাইল (যা একটি টার ফাইল) তৈরি করছি । ওভিএর ভিতরে একটি নির্দিষ্ট ক্রমে ফাইলগুলির প্রয়োজন (প্রথম ফাইলটি একটি ওভিএফ এবং অন্যটি হওয়া উচিত)।
xask

1
এর খুব ভাল কারণও রয়েছে: আপনি যখন কেবলমাত্র তার একটি অংশ বের করতে চান তখন খুব বড় ফাইলের পারফরম্যান্স। যেহেতু এর ক্রমটি ডিফল্টরূপে এলোমেলো, এবং আপনি কোনও ফাইল / ডিরেক্টরি বের করতে চান, যদি এটির আদেশ হয় তবে এটি দ্রুত হবে, যদি তা না হয় তবে এটি শেষ হওয়ার আগেই এটি পুরো আর্কাইভটি স্ক্যান করতে হবে।
স্টর্মবাইট

উত্তর:


12

স্লার্টিবার্টফেষ্ট সঠিক পথে রয়েছে, তবে তারার ডিফল্ট আচরণ ডিরেক্টরিতে নেমে আসে, তাই আপনি উত্পন্ন টার ফাইলের মধ্যে অন্তর্ভুক্ত একই ফাইলটির একাধিক অনুলিপি পেতে পারেন। আপনি কাজটি করে পরীক্ষা করে দেখতে পারেন tar tf file.tar | sort - টার্নের জন্য - না-পুনরাবৃত্তি বিকল্পটি অন্তর্ভুক্ত করা হবে work এছাড়াও, -print0 অনুসন্ধানের বিকল্পটি ব্যবহার করে , তারপরে --nullট্যারে বিকল্পটি ব্যবহার করে আপনার অদ্ভুত ফাইলের নামগুলি পাঠাতে সক্ষম হওয়া উচিত । শেষ ফলাফলটি এরকম দেখাচ্ছে:

find paths -print0 | sort -z | tar cf tarfile.tar --no-recursion --null -T -

আপনি ডার ফাইলটিতে অর্ডারটি ব্যবহার করে পরীক্ষা করতে পারেন tar tsf tarfile.tar। যদিও আপনার সম্ভবত কখনও প্রিন্ট 0, -z এবং --null বিকল্পের প্রয়োজন হবে না আপনি যদি না জানেন যে আপনি কোনও ফাইলের নাম এম্বেড থাকা একটি নতুন লাইনের সাথে মুখোমুখি হতে যাচ্ছেন তবে আমি কখনও চেষ্টা করে দেখিনি।


--No-recursion বিকল্পটি ব্যবহারের জন্য দুর্দান্ত পরামর্শ, ধন্যবাদ।
এরিক

এটি আমার জন্য কাজ করা সমাধান। এরিকের চেয়ে আমার আলাদা ব্যবহারের কেস রয়েছে এবং গুগল আমাকে এখানে এনেছে। আমি রিমোট সিস্টেমের সম্পূর্ণ অবস্থার সাথে সাথে স্ন্যাপশট সংগ্রহ করছি। ডেটা অত্যন্ত নিরর্থক। সময় অনুযায়ী ট্যারি ইনপুটটি বাছাই করা (ফাইলের নামগুলির একটি টাইমস্ট্যাম্প রয়েছে) সংকোচকের কার্যকারিতা উন্নত করে। একটি দ্রুত পরীক্ষা ফ্যাক্টর 2 (lzma2) দ্বারা উন্নতি দেখায়। এছাড়াও, আমি সংরক্ষণাগারটি কোনও ফাইল সিস্টেমে আনপ্যাক করি না, তবে টার এন্ট্রিগুলিতে স্ট্রিম প্রসেসিং করি। একটি সাজানো স্ট্রিম অনেক ভাল ডিবাগ আউটপুট তৈরি করে এবং প্রক্রিয়া শৃঙ্খলে অন্যান্য সুবিধা রয়েছে। +1
জোহানেস

5

টার ফাইলের মধ্যে থাকা ফাইলগুলির ক্রমটি আসলে গুরুত্বপূর্ণ নয়, যেহেতু ফাইলগুলি নিষ্কাশন করা হবে, ফাইল সিস্টেমটি আর যাইহোক আদেশটি সংরক্ষণ করবে না।

এর জন্য কোনও স্যুইচ নেই, তবে আপনি যদি সত্যিই এটি চেয়েছিলেন তবে আপনি বাছাই করা ক্রমে ফাইলের নামের একটি তালিকা সরবরাহ করতে পারেন, এবং এটি আপনার দেওয়া আদেশের সাথে টার ফাইল তৈরি করবে।

% tar cf tarfile tmp/diff.txt src/hellow.c junkimage.IMG barry/thegroup
% tar tf tarfile
tmp/diff.txt
src/hellow.c
junkimage.IMG
barry/thegroup

2
বা কেবল আউটপুটটি সাজান:tar tf tarfile | sort
ডগ হ্যারিস

কমান্ড লাইনে সেগুলি নির্দিষ্ট করার জন্য আমার কাছে অনেকগুলি ফাইল (20,000+) রয়েছে।
এরিক রবার্টসন

4
ডার ফাইলের মধ্যে থাকা ফাইলগুলির ক্রমটি যদি আপনার ডাউনলোড করার সময় ডিকম্প্রেস করতে এবং প্রদর্শন করতে হয় তবে তা বিবেচনা করে।
এরিক

ফাইল সিস্টেমের উপর নির্ভর করে।
থরবজর্ন রাভন অ্যান্ডারসন

4

ধরে নিচ্ছি যে নামেরগুলিতে নতুন লাইনের সাথে আপনার কাছে কোনও ফাইল নেই:

find /source_directory -print | sort | tar -czf target.tgz -T -

যদি এটি কাজ না করে (কখনই এটি চেষ্টা করে নি, তাই আমি জানি না - মানে টি-টি যুক্তিটির জন্য স্টিডিন):

find /source_directory -print | sort > /tmp/temporary_file_list
tar -czf target.tgz -T /tmp/temporary_file_list

তারপরে কেন প্রশ্ন রয়েছে। তবে কখনও কখনও জিজ্ঞাসা না করা সহজ হয়।


2
find . -depth -print0 | sort -z | pax -wvd0 > file.tar

প্যাক্স সিপিও এবং টার এবং পোষাকের ধরণের উভয়ের সেরা দিকগুলির জন্য পোসিক্স উত্তরসূরির ধরণ। এটি ডিফল্টরূপে আর্কাইভগুলি (ustar) লিখে। এটি মিডিয়ার জন্য স্বয়ংক্রিয়ভাবে ছড়িয়ে পড়া এবং প্রম্প্টিংও করে এবং এটি হয়ে গেলে সংক্ষিপ্তসার প্রিন্ট করে।


0

@ চার্লিহিরনের উত্তরের বিকল্প হিসাবে, আপনি যদি কেবলমাত্র সামগ্রী (ফাইল, সিমিলিংক) এবং ফোল্ডার মেটা-ডেটা সংরক্ষণ করতে আগ্রহী হন (যেমন, ফোল্ডার অনুমতি, এমটাইম, ইত্যাদি) আপনি ফোল্ডারগুলিকে findআউটপুট থেকে ফিল্টার করতে চাইতে পারেন ।

find paths -not -type d -print 0 | sort -z | tar cf tarfile.tar --null -T -
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.