টিআর বনাম সিপিআইও সংরক্ষণাগার ফাইল ফর্ম্যাটগুলির মধ্যে পার্থক্য কী?


41

আমি কৌতূহলী এবং কিছুটা পড়া করেছি তবে এখনও প্রশ্ন আছে।

কি সিপিআইওকে টিআর থেকে আলাদা করে তোলে? আমাকে অন্য একটি প্রশ্নে বলা হয়েছিল যে টারটি হ'ল 1 টি সংরক্ষণাগারে অনেকগুলি ফাইল একত্রে টানানোর জন্য যা সাধারণত gzip'd বা bzip'd হয়।

এছাড়াও আমাকে বলা হয়েছিল TAR STDOUT থেকে সংক্ষেপ করতে পারে না। আমি ব্যাকআপগুলির জন্য জেডএফএস স্ন্যাপশট সংরক্ষণাগার / সঙ্কলন করতে চাই। আমি ভাবছিলাম যে আমি এই প্রভাবটি পেতে bzip2 এর সাথে সিপিআইও একত্রিত করতে পারি।

নাকি আমার পুরোপুরি ভুল ধারণা আছে? এটাই কি সিপিআইওর উদ্দেশ্য নয়?

এই ধরণের কমান্ডগুলি পড়ে আমি জেডএফএস স্ন্যাপশটগুলির ব্যাক আপ করার জন্য ওরাকল ডক্সটি পড়েছি।

# Backup snapshot to cpio and bzip2 archive
zfs send media/mypictures@20070607 | cpio -o | bzip2 -9c > ~/backups/20070607.bz2

# Restore snapshot from cpio and bzip2 archive
zfs recieve media/mypictures@20070607 | cpio -i | bunzip2 -c ~/backups/20070607.bz2

ভুলে যাবেন না pax: পি
জানুস ট্রয়লসন

উত্তর:


28

উভয় tarএবং cpioএকক উদ্দেশ্য: একক স্ট্রিমে অনেক পৃথক ফাইল একত্রিত করুন। তারা ডেটা সংকুচিত করে না। (এই দিন tarতার আপেক্ষিক সরলতা আরো জনপ্রিয় কারণে - এটা পরিবর্তে সঙ্গে মিলিত হয়ে যাওয়ার অফ আর্গুমেন্ট হিসাবে ইনপুট ফাইল গ্রহণ করতে পারেন findহিসাবে cpioআছে।)

আপনার ক্ষেত্রে, আপনার এই সরঞ্জামগুলির কোনও প্রয়োজন হয় না ; এগুলির কোনও কার্যকর প্রভাব নেই, কারণ আপনার কাছে আলাদা আলাদা ফাইল নেই don't zfs sendইতিমধ্যে একই কাজ করেছে যে tarসুতরাং আপনার কাছে কোনও ফাইল নেই, কেবল একটি নামহীন স্ট্রিম।

স্ন্যাপশটটি সংকুচিত করতে, আপনাকে zfsএকটি কম্প্রেশন প্রোগ্রামের মাধ্যমে আউটপুটটি পাইপ করতে হবে:

zfs send media/mypictures@20070607 | gzip -c > ~/backups/20070607.gz

gzip -dc ~/backups/20070607.gz | zfs receive media/mypictures@20070607

(আপনি প্রতিস্থাপন করতে পারেন gzipসঙ্গে xzবা bzip2, বা অন্য কোন প্রবাহ-কম্প্রেশন টুল যদি তুমি চাও।)


ওহ আমি দেখতে পাচ্ছি, তাই আমার জেডএফএস আউটপুটটি কোনও ডেটা স্ট্রিম ফাইল করে না? সুতরাং এটি ব্যাখ্যা করবে কেন ওরাকল উদাহরণগুলি কমান্ডগুলিতে TAR অন্তর্ভুক্ত করে না।
ianc1215

1
@ সোলিগনিস: আপনি এটি এইভাবে ভাবতে পারেন: zfs sendইতিমধ্যে যা tarকরতে হবে তেমন করে ।
মাধ্যাকর্ষণ

62

মহাকর্ষ এবং পল এর আগে যা বলা হয়েছিল তা ছাড়াও :

ইতিহাস

"পুরানো দিনের" ইন, cpio (বিকল্প -cব্যবহৃত) ছিল ব্যবহার করতে হলে অন্যান্য ইউনিক্সের derivates ফাইল স্থানান্তর করার জন্য যেহেতু এটি আরো পোর্টেবল এবং তুলনায় নমনীয় ছিল এসে টুল আলকাতরা । তবে টার পোর্টিবিলিটিউগুলি 1980 এর দশকের শেষের দিক থেকে সমাধান হিসাবে বিবেচিত হতে পারে।

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

ব্যবহারকারী ইন্টারফেস

টার একটি টেপ কনফিগারেশন ফাইল ব্যবহার করতে পারে যেখানে প্রশাসক সিস্টেমের সাথে সংযুক্ত টেপ ড্রাইভগুলি কনফিগার করতে পারে। তারপরে ব্যবহারকারী কেবলমাত্র টেপটির সঠিক ডিভাইস নোডটি মনে রাখার পরিবর্তে "ওয়েল আমি টেপ ড্রাইভ 1" নেব (যা খুব বিভ্রান্তিকর হতে পারে এবং বিভিন্ন ইউনিক্স প্ল্যাটফর্ম জুড়েও স্ট্যান্ডার্ডযুক্ত নয়)।

তবে মূল পার্থক্যটি হ'ল:

টার তার নিজস্ব ডিরেক্টরিতে অনুসন্ধান করতে সক্ষম হয় এবং কমান্ড লাইন আর্গুমেন্ট থেকে ব্যাক আপ করার জন্য ফাইল বা ডিরেক্টরিগুলির তালিকা গ্রহণ করে।

সিপিও কেবল যে ফাইল বা ডিরেক্টরিতে বলা হয় সেগুলি সংরক্ষণাগার সংরক্ষণ করে তবে এটি নিজস্ব ডিরেক্টরিতে পুনরাবৃত্তভাবে সাব-ডাইরেক্টরিগুলি অনুসন্ধান করে না। এছাড়াও cpio আইটেম থেকে সংরক্ষন করা করে তালিকাটি পায় stdin - এই কারণে এটি প্রায় সবসময় সঙ্গে একযোগে ব্যবহার করা হয় খোঁজ

একজন cpio কমান্ড প্রায়ই শিক্ষানবিস থেকে ভয়ানক দেখায় সঙ্গে তুলনা যদি আলকাতরা :

 $ find myfiles -depth -print0 | cpio -ovc0 | gzip -7 > myfiles.cpio.gz
 $ tar czvf myfiles.tar.gz myfiles

আমি মনে করি আর্কাইভ ফাইল তৈরির জন্য বেশিরভাগ লোকই টার ব্যবহারের মূল কারণ : একটি সম্পূর্ণ ডিরেক্টরি বান্ডিল করার মতো সাধারণ কাজগুলির জন্য এটি কেবল সহজ।

এছাড়াও জিএনইউ টার বিকল্প দেয় -zযা আর্কাইভটিকে ফ্লাইতে জিএনইউ জিপ দিয়ে সংকুচিত করে তোলে এবং জিনিসগুলিকে আরও সহজ করে তোলে।

অন্যদিকে সন্ধানসিপিও দিয়ে কেউ নিফটি কাজ করতে পারে । প্রকৃতপক্ষে এটি আরও ইউনিক্সের মতো পদ্ধতির: ইতিমধ্যে যদি এমন কোনও সরঞ্জাম দেখা যায় যা প্রায় সকলেরই চিন্তাভাবনা করতে পারে তবে যদি এমন একটি সরঞ্জাম ইতিমধ্যে থাকে তবে কেন সিপিওতে ডিরেক্টরি ট্রি অনুসন্ধান অন্তর্ভুক্ত করুন : সন্ধান করুন । যে বিষয়গুলি মনে আসে তা হ'ল কেবলমাত্র একটি নির্দিষ্ট তারিখের চেয়ে নতুন ফাইলগুলি ব্যাক আপ করা, ফাইলগুলি একই ফাইল সিস্টেমে বসবাসকারীদের মধ্যে সীমাবদ্ধ করা বা grep -vনির্দিষ্ট ফাইলগুলি বাদ দেওয়ার জন্য অনুসন্ধান-আউটপুট ফিল্টার করা ...

জিএনইউ ট্যারের লোকেরা সিপিও দিয়ে আগে কেবল সম্ভব ছিল এমন অনেকগুলি বিষয় অন্তর্ভুক্ত করতে প্রচুর কাজ ব্যয় করেছিল । প্রকৃতপক্ষে উভয় সরঞ্জাম একে অপরের কাছ থেকে শিখেছিল - তবে কেবল সিপিও টর ফর্ম্যাটটি পড়তে পারে - অন্যদিকে নয়।

ট্যার এবং আউটপুট প্রক্রিয়াকরণ

আপনি বলেছেন এমন কিছুতে একটি সর্বশেষ নোট:

এছাড়াও আমাকে বলা হয়েছিল TAR STDOUT থেকে সংক্ষেপ করতে পারে না। আমি ব্যাকআপগুলির জন্য জেডএফএস স্ন্যাপশট সংরক্ষণাগার / সঙ্কলন করতে চাই। আমি ভাবছিলাম যে আমি এই প্রভাবটি পেতে bzip2 এর সাথে সিপিআইও একত্রিত করতে পারি।

ভাল, প্রতিটি সংস্করণের টার (জিএনইউ বা না) পাইপে ব্যবহার করা যেতে পারে। -সংরক্ষণাগার নাম হিসাবে কেবল একটি বিয়োগ চিহ্ন ( ) ব্যবহার করুন :

 $ tar cvf - myfiles | bzip > myfiles.tar.bz

এছাড়াও জিএনইউ টার--to-command একটি পোস্টপ্রসেসর কমান্ড নির্দিষ্ট করার বিকল্পটি দেয় - যদিও আমি এখনও পাইপটি পছন্দ করি। নির্দিষ্ট হার্ডওয়্যার ডিভাইসে লেখার সময় এটি ব্যবহারের হতে পারে।


এটি 'এসটিডিএন থেকে' আলাদা হবে না, বরং 'এসটিডিআউট'-এর থেকে' এসটিডিআউট 'থেকে' সত্যই আমাকে বোঝায় না
জোয়াকিম এলফসন on ই

ঠিক আছে, আমি কেবল মূল প্রশ্নটিই উদ্ধৃত করছিলাম। আদর্শ - এটি কিছুটা ভুলভ্রান্ত হয়েছে, তবে আমি মনে করি একটি পয়েন্টটি পেয়েছে।
কেটিএফ

3
"ডিরেক্টরি ট্রি ট্রিপটি সিপিওতে অন্তর্ভুক্ত করুন যদি ইতিমধ্যে যদি এমন একটি সরঞ্জাম উপস্থিত থাকে যা প্রায় সকলের যত্ন নেয় তবে" ভাল প্রশ্ন, তবে তারপরে আপনাকে অনুলিপি ( cp), সরানো ( mv) diff, ইত্যাদির জন্যও জিজ্ঞাসা করতে হবে ; - )
মেকি

1
trombonehero বলেন : BSD tar uses libarchive under the hood, so it can handle cpio, pax, shar। তুমি বলেছিলে করেছি: only cpio may read the format of tar। এটা কি দ্বন্দ্ব নয়?
n611x007

6

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

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

ডার স্ট্যান্ডআউটে স্ট্যান্ডিন এবং আউটপুটটিতে প্রকৃতপক্ষে ইনপুট নিতে পারে - যা পরে আপনার মতো বা এর মতো কিছু বিজিপ 2 এ পাইপ করা হবে। যদি "z" বিকল্পের সাথে ডাকা হয়, তবে এটি স্বয়ংক্রিয়ভাবে আউটপুটটিতে জিজপ আহ্বান করবে।


1
হ্যাঁ এবং -jbzip2 প্রার্থনা করবেন না ?
ianc1215

2
হ্যাঁ, -জেড বিজিপ 2 এবং কিছু (আরও বিরক্তি?) সংস্করণ পেয়েছে
জোয়াকিম এলোফসন

4
আপনি যখন -a বিকল্পটি ব্যবহার করেন তখন জিএনইউ টারের সবচেয়ে সাম্প্রতিক সংস্করণগুলি সংরক্ষণাগার ফাইলের নাম থেকে পছন্দসই সংক্ষেপণ বিন্যাসটি অনুমান করতে পারে। সুতরাং এটি: tar -caf myfiles.tar.xz myfiles/ব্যবহারকে সংকুচিত করবে xzএবং এটি tar -caf myfiles.tar.gz myfiles/ব্যবহারকে সংকুচিত করবে gzip
জের্লোস

5

আমি সিএ তে এইচপি প্রযুক্তির সহায়তা চেয়েছি। 1996 কেন cpioওভার ব্যবহার tar

আমাকে বলা হয়েছিল যে টেপগুলি প্রসারিত এবং পরিশ্রুত। যখন tarটেপ একজন অপাঠ্য অংশ ছুঁয়েছে এটা ব্যর্থ হয় এবং ত্রুটিপূর্ণ সংখ্যা ফেরৎ। যখন cpioঅপঠনযোগ্য অংশে পৌঁছে যায়, এটি পরবর্তী পঠনযোগ্য ব্লক অবিরত, পুনরায় সংযোজন এবং অবিরত থাকে।

আমি এটি সমর্থন করার জন্য ডকুমেন্টেশন কখনও দেখিনি, তবে সর্বদা ব্যবহৃত হয় cpio


পোস্ট অনুসারে, টারের বিটওয়াইজ ক্ষতিগুলি অঞ্চল / ফাইলগুলিতে প্রভাবিত বলে মনে হয়, আপনি সিপিও সম্পর্কে যা বলেছিলেন ঠিক তেমনই। oxfordrepo.blogspot.tw/2008/12/archive-file-resiliences.html
19:38

4

এছাড়াও লক্ষণীয়: কমপক্ষে (কমপক্ষে) ফ্রিবিএসডি এবং ম্যাক ওএস এক্সে, আপনি সিপিও ফাইলগুলি টারের সাহায্যে চালিত করতে পারেন ulate বিএসডি টার হুডের নীচে লিবারচাইভ ব্যবহার করে, তাই এটি সিপিও, প্যাক্স, শার পরিচালনা করতে পারে ...

এর অর্থ হ'ল cpioকমান্ডের ব্যবহারযোগ্যতার বিষয়গুলি আপনাকে সিপিও ফাইলগুলির সাথে ইন্টারঅ্যাক্ট করা থেকে বিরত রাখতে হবে না।


ktf বলেন : only cpio may read the format of tar। তুমি বলেছিলে করেছি: BSD tar uses libarchive under the hood, so it can handle cpio, pax, shar। এটা কি দ্বন্দ্ব নয়?
n611x007

1
@ n611x007 এই উত্তরটি BSD টার সম্পর্কে আলোচনা করে। অন্যটি সম্ভবত জিএনইউ টারের কথা বলছে। তারা বিভিন্ন প্রোগ্রাম।
নবীন

3

যদিও এখানে উত্তরগুলি ইতিমধ্যে তুলনা করা হয়েছে cpioএবং tarখুব ভাল, আমি cpioপাইপলাইন মোড নামে একটি বৈশিষ্ট্য হাইলাইট করতে চাই যা findতাদের ডিরেক্টরি কাঠামো সংরক্ষণের সময় নির্বাচনী ফাইলগুলি (যেমন, মাধ্যমে এবং ফিল্টার) অনুলিপি করা আরও দক্ষ করে তোলে । এই বৈশিষ্ট্যটি ভালভাবে নথিভুক্ত হয়েছে এবং এর প্রাথমিক ভিত্তিতে এটির মতো দেখাচ্ছে:

find . <predicates> | cpio -pdmv /destination/dir

সমতুল্য tarএই জাতীয় কিছু জড়িত হবে:

find . <predicates> | tar -T - -cf - | (cd /destination/dir; tar xvf -)

যেমন কোর্সের অন্যান্য বিকল্প আছে rsyncএবং cp --parentsআলোচনা অন্য থ্রেড , কিন্তু কিছুই নমনীয়তা সমন্বয় দ্বারা প্রদত্ত পাসে আসে findএবং cpio। সঙ্গে tarআর্কাইভ তৈরি করার জন্য সর্বব্যাপী হচ্ছে, এই একমাত্র কারণ যার জন্য আমি এখনও ব্যবহার করেন cpio

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