কিভাবে একটি খালি টার সংরক্ষণাগার পেতে?


24

আমি একটি আরপিএম তৈরি করছি যেখানে .spec ফাইলে সমস্ত কিছু রয়েছে (জিজ্ঞাসা করবেন না :-))। rpmbuild এর জন্য একটি "উত্স" ফাইলের প্রয়োজন, তাই আমি একটি খালি টার ফাইল তৈরি করার চেষ্টা করছিলাম। তবে, আমি যদি কোনও ফাইলের নাম না দিই, তার অভিযোগ:

tar: Cowardly refusing to create an empty archive
Try `tar --help' or `tar --usage' for more information.

আমি কীভাবে সত্যিকারের খালি টার ফাইল তৈরি করব?


: তার আগে এখানে উত্তর দেওয়া superuser.com/questions/133186/...
Rhyuk

3
আসলে, @ রুইউক, এটি নেই। এই পোস্টটি এমন কেউ আছেন যে কোনও ফাইলের নাম তালিকাভুক্ত করতে ভুলে গিয়েছিলেন, এবং উত্তরটি তাদের উপলব্ধি করতে সহায়তা করেছিল যে তাদের আর একটি যুক্তি পাস করার দরকার ছিল, ফলস্বরূপ একটি খালি খালি সংরক্ষণাগার। এই কেন আমি যে প্রশ্নই শিরোনাম পরিবর্তন, এবং এই প্রশ্ন, যা তৈরি করেছেন শুরু করে উত্তর কী যে প্রশ্ন শিরোনাম জিজ্ঞাসা ছিল।
শান রিফশনিডার

উত্তর:


24

আপনি জিএনইউ এবং বিএসডি টারকে একটি খালি সংরক্ষণাগার তৈরি করতে বাধ্য করতে পারেন:

tar -cf tarfilename.tar -T /dev/null

হ্যাঁ, 'চ' বিকল্পটি অবশ্যই সর্বশেষ হতে হবে, কারণ এটি ফাইলের নাম নির্দিষ্ট করে। আপনি টি নামে একটি সংরক্ষণাগার তৈরি করতে চলেছেন, তবে তা যাইহোক tarfilename.tar ফাইল হারিয়ে যাওয়ার ক্ষেত্রে ত্রুটি ঘটবে।
লার্নিক্স

1
একটি খালি টার তৈরির একটি কারণ: স্ক্রিপ্টযুক্ত টার তৈরি। পদক্ষেপ 1: টার তৈরি করুন। পদক্ষেপ 2: একে একে ফাইল যুক্ত করুন। আপনি "যদি প্রথম ফাইলটি তৈরি করেন তবে অন্যটি তৈরি করুন তারপর সংযোজন করুন" দিয়ে এটি করতে পারেন তবে এটি ততটা মসৃণ নয়।
dpk

4
@dpk: আপনি যা বলছেন তা যদি আমি বুঝতে পারি তবে আপনি কেন সবসময় অ্যাপেন্ড ব্যবহার করবেন না? টেন্ডার ফাইলটি যদি ইতিমধ্যে বিদ্যমান না থাকে তবে অ্যাপেন্ড তৈরি করবে, সুতরাং এটি আপনার প্রথম ফাইল কিনা তা খতিয়ে দেখার দরকার নেই, কেবল সংযোজন করুন এবং এটি যদি প্রথম ফাইলের টর তৈরি করে create
শান রিফশনিডার

1
@ SeanReifschneider দেখে মনে হচ্ছে এটি ঠিকঠাক কাজ করবে। খুশী হলাম।
dpk

1
@ সিয়ানরিফশনিডার: +1 যুক্ত ইঙ্গিতটির জন্য যে সংযোজন মোড প্রথম ফাইলটির জন্য সংরক্ষণাগারটি ডিস্কে না থাকলে এটি তৈরি করে। আমি একটি স্ক্রিপ্টে অ্যাপেন্ড মোডে টার এক্সিকিউট করতে ফাইন্ড কমান্ডটি ব্যবহার করছি তাই আগে-হাতে সংরক্ষণাগার ফাইল তৈরি করার প্রয়োজন ছিল না।
গুরুএম

8

বাসদ: tar cvf empty.tar --from-file /dev/null

জিএনইউ (লিনাক্স): tar cvf empty.tar --files-from /dev/null

সোলারিস: tar cvf empty.tar -I /dev/null


সবশেষে সোলারিসে কাজ করে এমন কিছু !! অনেক অনেক ধন্যবাদ
এজেপিয়ারেজ

4

একটি খালি টার ফাইল এটিতে একটি ফাইল যার মধ্যে 10240 NUL বাইট রয়েছে। সুতরাং একটি খালি টার ফাইল তৈরি করতে আপনার এমনকি প্রয়োজন tarহয় না তবে এর পরিবর্তে এগুলির দুটি ব্যবহার করতে পারেন:

$ head --bytes=10240 /dev/zero > empty.tar
$ truncate --size=10240 empty.tar
$ fallocate --length=10240 empty.tar
$ dd if=/dev/zero bs=10240 count=1 iflag=fullblock > empty.tar
$ dd if=/dev/zero bs=1 count=10240 > empty.tar

@ কামিলম্যাসিওরোস্কি ডিডি ব্যবহার সম্পর্কে আপনার ইঙ্গিতগুলির জন্য ধন্যবাদ! আমি নতুন কিছু শিখলাম! সঠিক প্রশ্নের উত্তর দেওয়ার বিষয়ে: শিরোনামটি আসলে "কীভাবে টারকে চাপিয়ে দেবে" জিজ্ঞাসা করে তবে প্রশ্নের পাঠটি পড়ার পরে এটি স্পষ্ট হয়ে যায় যে ওপি আসলে একটি খালি টার ফাইল চায় এবং এটি কীভাবে তা বিবেচনা করা উচিত নয়।
josch

আমি এগিয়ে গিয়ে প্রশ্নটি সম্পাদনা করেছি।
কামিল ম্যাকিয়েরোভস্কি

3

আমি একটি একক ফাইল সংরক্ষণাগার করে খালি সংরক্ষণাগার তৈরি করতে সক্ষম হয়েছি, তারপরে সংরক্ষণাগার থেকে ফাইলটি মুছে ফেলছি।

tar cf empty.tar somefile                   # creates archive
tar --delete -f empty.tar somefile          # remove the file
tar tf empty.tar                            # list contents of archive

এটি আমার পক্ষে কাজ করে।


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