পিতামহিত ডিরেক্টরি অন্তর্ভুক্ত না করেই একটি সংরক্ষণাগার তৈরি করা


62

আমি আমার স্ক্রিপ্টের জন্য একটি গ্রাফিকাল প্রোগ্রাম তৈরি করার চেষ্টা করছি।

স্ক্রিপ্টের অভ্যন্তরে আমি একটি সংরক্ষণাগার তৈরি করতে টার ব্যবহার করি।

গ্রাফিকাল প্রোগ্রাম থেকে আমি ফাইলের পুরো নাম পাই যা আমি একটি টার সংরক্ষণাগার তৈরি করতে চাই।

tar -cvf temp.tar /home/username/dir1/dir2/selecteddir 

আমার টার আর্কাইভে হোম, ব্যবহারকারীর নাম, dir1, dir2 এবং নির্বাচিতডির অন্তর্ভুক্ত রয়েছে যখন আমি কেবল নির্বাচিতডির সহ সংরক্ষণাগার তৈরি করতে চাই tar

উত্তর:


79

এটি সম্পাদন করতে আপনি -Cবিকল্পটি ব্যবহার করতে পারেন tar:

tar -C /home/username/dir1/dir2 -cvf temp.tar selecteddir

ম্যান পেজ থেকে tar:

-C directory
         In c and r mode, this changes the directory before adding the following files.  
         In x mode, change directories after opening the archive but before extracting 
         entries from the archive.

আপনি কীভাবে জানেন যে আমি কীভাবে সিলেক্টডির এবং পাথ / হোম / ইউজারনেম / দির 1 / ডির 2 পর্যন্ত বিভক্ত করতে পারি যাতে আমি ব্যবহারকারী-সি বিকল্পটি করতে পারি
সুজিত মহারজান

@ সুজিতমাহার্জন আপনি dirname"নির্বাচিতডির" অবধি সমস্ত কিছু উত্তোলন করতে এবং "নির্বাচিতডির" নিষ্কাশন করতে ব্যবহার করতে পারেন basename। আর্গুমেন্ট হিসাবে $ পথ দিয়ে দুটি কমান্ড চেষ্টা করুন।
এমকেসি

2
মূল্যবান যোগ করে যে এটি জিএনইউ এবং বিএসডি টার উভয়ের জন্য বৈধ।
লুক এক্সন

5
মনে রাখবেন যে আপনি -C বিকল্পের সাহায্যে গ্লোববিং ব্যবহার করতে পারবেন না। tar -C /home/username/dir1/dir2 -cvf temp.tar '*.csv'কাজ করবে না
ক্রিশ্চিয়ান লং

কাজ করে না: টার:
সিলেক্টডির

11

এই সমস্যাটি দেখতে আপনি দুটি পদ্ধতি ব্যবহার করতে পারেন।

আমার মতে প্রথমটিটি সহজ। কেবলমাত্র cdসরাসরি আপনি কম্প্রেস করতে চান উপরে ডিরেক্টরির মধ্যে। এই ক্ষেত্রে এটি হবে dir2

$ cd /home/username/dir1/dir2/
$ tar -cvf temp.tar selecteddir

দ্বিতীয় উপায়টি হ'ল বিকল্পটি --transformযা কোনও sedএক্সপ্রেশন নেয় এবং ফাইলগুলির বিরুদ্ধে এটি চালায়। দ্রষ্টব্য: আপনি যদি অব্যাহতি থাকবে /মধ্যে sedঅভিব্যক্তি।

$ tar -cvf temp.tar /home/username/dir1/dir2/selecteddir --transform='s/\/home\/username\/dir1\/dir2\///g'

প্রথম পদ্ধতির শেষে কি বিন্দু (।) প্রয়োজন? আমি ছাড়া এটা চেষ্টা এবং করেছেন: tar: Cowardly refusing to create an empty archive। আমার কাছে যখন বিন্দুটি থাকে, তখন এটি বিরক্তিকরভাবে রুটে নামের একটি ডিরেক্টরি থাকে .। সুতরাং, কাছাকাছি কিন্তু নিখুঁত নয়।
JW01

1
আমার আগের মন্তব্য আরও। আমি আমার সমস্যা সমাধান করেছি। $ cd /home/username/dir1/dir2/ && tar -cvf temp.tar selecteddir *আমার জন্য কাজ। বিন্দুর পরিবর্তে অ্যাসিরিস্টক ব্যবহার করা হচ্ছে .। আপডেট: ওওফস - যদিও আমি লুকানো ফাইলগুলি হারিয়েছি।
JW01

6

প্রথমে ওয়ার্কিং ডিরেক্টরিতে যান,

cd /your/working/directory/ 

তারপরে *যাদুটি ব্যবহার করুন :-)

tar -cvf temp.tar *

আমি লুকানো ডিরেক্টরি সংরক্ষণাগারভুক্ত করার চেষ্টা করছি এবং আমি যদি এগুলি সরাসরি যুক্ত করি (না *) এটি কাজ করে তবে এটি * ব্যবহার করার সময় সংরক্ষণাগারটিতে কেবল সংরক্ষণাগারের নাম যুক্ত করে ...
ওলে

1

আসলে, আমি কেটানের উত্তর ব্যবহার করে একটি সমস্যা পেয়েছি

tar -C / home / ব্যবহারকারীর নাম / dir1 / dir2 -cvf temp.tar নির্বাচিত

আপনি যখন সমস্ত ফাইলকে কেবল dir2 এ অনুলিপি করতে চান, কেবলমাত্র সমস্ত ফাইল তখন আমি প্রথমে এই ধারণাটি প্রকাশ করি:

তার-সি / বাড়ি / ব্যবহারকারীর নাম / দির 1 / ডায়ার 2-সিভিএফ টেম্পার্টার *

যাইহোক, আপনি dir2 ডিরেক্টরিতে না থাকাকালীন এটি আপনার সমস্যার কারণ হতে পারে যেহেতু * আপনার বর্তমান ডাইরেক্ট্রয়ে ফাইলগুলি ট্যারা করে। এবং আমি নীচের কমান্ডটি ব্যবহার করে সমস্যার সমাধান করেছি:

 tar -C /home/username/dir1/dir2 -cvf temp.tar ./

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