টার সংরক্ষণাগার যা ফাইলগুলির একটি তালিকা থেকে ইনপুট নেয়


166

আমার কাছে একটি ফাইল রয়েছে যা আমি তার সাথে সংরক্ষণাগার রাখতে চাইলে ফাইলগুলির তালিকা থাকে। এটি কল করুনmylist.txt

এতে রয়েছে:

file1.txt
file2.txt
...
file10.txt

আমি কি কোনও উপায় টিআর কমান্ড জারি করতে পারি যা mylist.txtইনপুট হিসাবে গ্রহণ করে ? কিছুটা এইরকম

tar -cvf allfiles.tar -[someoption?] mylist.txt

যাতে এটি অনুরূপ হয় যেন আমি এই আদেশটি জারি করি:

tar -cvf allfiles.tar file1.txt file2.txt file10.txt 

4
এই বিকল্পটির জন্য ট্যান ম্যান পৃষ্ঠাটি অত্যন্ত অপ্রত্যাশিত (কমপক্ষে রেডহ্যাট 5.4 এর মাধ্যমে 6.3)): "-টি: ফাইল এফ থেকে এক্সট্র্যাক্ট করতে বা তৈরি করতে নাম পান"। "এক্সট্রাক্ট বা তৈরি করুন" এর মতো শব্দগুলি সংরক্ষণাগারটির বাইরে থেকে ফাইলগুলি নেওয়ার ক্ষেত্রে প্রযোজ্য -X, তবে সেগুলি রাখেনি The বাদ দেওয়া বিকল্পটি পুরানো ইউনিক্স টার কমান্ড থেকে বেঁচে আছে, তবে দৃশ্যত আমি (অন্তর্ভুক্ত) করি নি!
ওগ্রে গীতসংহিতা

manকোনও EXAMPLESবিভাগের সাথে এটি কয়েকটি স্ট্যান্ডার্ড বিভাগ থাকা সত্ত্বেও কয়েকটি পৃষ্ঠা রয়েছে । < Unix.stackexchange.com/questions/306189/… > দেখুন।
সাম বুসালিস

উত্তর:


262

হ্যাঁ:

tar -cvf allfiles.tar -T mylist.txt

আমি আশা করি আমি mylist.txt এ মন্তব্য রাখতে পারলাম .. মাইলিস্ট.টেক্সট এর ভিতরে থেকে কিছু টার অপশন ব্যবহার করে কি কোনও কর্মক্ষেত্র রয়েছে?
স্টাফেন

7
@ স্টাফেন যে সহজ, - বহিরাগত পতাকা ব্যবহার করে এটি এর অনুমতি দেয়। আপনার মন্তব্য রেখাগুলি একটি '#' দিয়ে শুরু হয়েছে বলে ধরে নেওয়া, নীচের মত একটি কমান্ডটি সেমিমেন্টযুক্ত লাইনগুলিতে কোনও চেষ্টা করা ফাইল অপারেশনকে উপেক্ষা / বাদ দিতে পারে, অর্থাত আপনার কমান্ডটি এর মতো দেখতে পারে: tar -cvf allfiles.tar --excolve = '^ # '-T mylist.txt। টার একটি ত্রুটির কথা জানায়, তবে আপনি যখন নিজের টার সংরক্ষণাগারটি পরীক্ষা করেন তখন কোনও ত্রুটি থাকে না এবং তালিকা থেকে সমস্ত ফাইল আপনার সংরক্ষণাগারের অভ্যন্তরে থাকে।
ম্যাট জি

নির্দেশ করে যে এই কমান্ডটি লিনাক্স বৈকল্পিকের জন্য এবং সানओএস বা অন্যান্য ভেরিয়েন্টগুলির জন্য, নীচের অন্যান্য উত্তরগুলি পরীক্ষা করে দেখুন। উদাহরণস্বরূপ, সানোএসের জন্য, দুটি বিকল্প আমি পরীক্ষা করেছি: টার-সিভিএফ ফাইল.টার -আই list.txt এবং টার-সিভিএফ ফাইল.টিআর cat (বিড়াল তালিকা। টেক্সট)
নাজিব

-L mylist.txtএআইএক্স
রোল্যান্ড

82

জিএনইউ ট্যার ধরে নিচ্ছেন (এটি লিনাক্স হিসাবে), -Tবা --files-fromবিকল্পটি আপনি চান তা।


3
এই বিকল্পটি এছাড়াও FreeBSD 'র 10. এ "bsdtar 3.1.2" বিদ্যমান
drue

33

আপনি ফাইলের নামগুলিতে পাইপও করতে পারেন যা কার্যকর হতে পারে:

find /path/to/files -name \*.txt | tar -cvf allfiles.tar -T -

2
.Txt ফাইল তালিকাটি যদি সত্যিই বিশাল হয় তবে কী হবে? কারও কি টার-সি .. এর পরিবর্তে তারার সাথে কমান্ড ব্যবহার করা উচিত ..?
স্টাফেন

1
@ স্টাফেন হুম, আমি মনে করি না এই পদ্ধতির জন্য তালিকার দৈর্ঘ্য খুব বেশি গুরুত্বপূর্ণ। প্রকৃতপক্ষে, আমি কল্পনা করব যে এই পদ্ধতিটি জার্গার্সের চেয়ে আরও ভাল, কারণ ডেটা যুক্ত করার জন্য xargs বার বার ট্যারে পুনরায় চালিত হবে, তবে আমি সত্যিই পাশাপাশি পদ্ধতিগুলি পরীক্ষা করে দেখিনি।
Woot

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

14

টারের কিছু সংস্করণ, উদাহরণস্বরূপ, এইচপি-ইউএক্সের ডিফল্ট সংস্করণগুলি (আমি ১১.১১ এবং ১১.৩১ পরীক্ষা করেছি) কোনও ফাইলের তালিকা নির্দিষ্ট করার জন্য একটি কমান্ড লাইন বিকল্প অন্তর্ভুক্ত করে না, সুতরাং একটি শালীন কাজটি হ'ল:

tar cvf allfiles.tar $(cat mylist.txt)

4
সহজভাবে, ইউইউসি (অপ্রয়োজনীয় ব্যবহার cat) $(<mylist.txt)
ডেভিড সি র্যাঙ্কিন

2
নোট করুন যে mylist.txtএটি বড় হলে কমান্ড লাইনের সর্বাধিক দৈর্ঘ্য অতিক্রম করতে পারে
আন্দ্রে হল্জনার

যে ক্ষেত্রে tar -T <(<mylist.txt)। এই উত্তর মত অপ্রয়োজনীয়।
মাইক ডি

7

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

সুতরাং উদাহরণ পড়তে হবে

tar -cvf allfiles.tar -I mylist.txt

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