ট্যারিং ফাইলগুলি সংকোচনের উন্নতি করতে পারে?


9

একত্রে থাকা ফাইলগুলি স্ট্যান্ডার্ড সরঞ্জামগুলির সাথে সংক্ষেপণ উন্নত করতে পারে, যেমন gzip, bzip2, xz?

আমি দীর্ঘদিন ধরে এটিকে কেস বলে মনে করেছি তবে এটি কখনই পরীক্ষিত হয়নি। যদি আমাদের সাথে একই রেকর্ড বাইটগুলির 20Mb ফাইলের 2 কপি থাকে, তবে একটি চতুর সংক্ষেপণ প্রোগ্রাম যা বুঝতে পারে যে এটি পুরো টার্বলকে প্রায় 20Mb পর্যন্ত সঙ্কুচিত করতে পারে।

আমি কেবল gzip, bzip2, এবং xz ব্যবহার করে এই পরীক্ষার চেষ্টা করেছি 1) এলোমেলো বাইটের একটি ফাইল, 2) সেই ফাইলটির দুটি কপির একটি টারবাল এবং 3) সেই ফাইলটির দুটি কপির একটি বিড়াল। সমস্ত ক্ষেত্রে সংকোচনের ফলে ফাইলের আকার হ্রাস হয়নি। এটি 1 কেসের ক্ষেত্রে প্রত্যাশিত তবে 2 এবং 3 কেসের ক্ষেত্রে সর্বোত্তম ফলাফলটি হ'ল 40Mb ফাইলটি প্রায় 20 এমবিতে সঙ্কুচিত হতে পারে। এটি একটি সংক্ষেপণ প্রোগ্রামের জন্য দেখার জন্য একটি কঠিন অন্তর্দৃষ্টি, বিশেষ করে কারণ অতিরিক্ত কাজগুলি দূরত্বের, তাই আমি একটি নিখুঁত ফলাফল আশা করবো না তবে আমি এখনও বুঝতে পেরেছিলাম যে সেখানে কিছু সংকোচনের উপস্থিতি রয়েছে।

টেস্ট:

dd if=/dev/urandom of=random1.txt bs=1M count=20
cp random1.txt random2.txt
cat random1.txt random2.txt > random_cat.txt
tar -cf randoms.tar random1.txt random2.txt
gzip -k random* &
bzip2 -k random* &
xz -k random* &
wait
du -sh random*

ফলাফল:

20+0 records in
20+0 records out
20971520 bytes (21 MB) copied, 1.40937 s, 14.9 MB/s
[1]   Done                    gzip -k random*
[2]-  Done                    bzip2 -k random*
[3]+  Done                    xz -k random*
20M random1.txt
21M random1.txt.bz2
21M random1.txt.gz
21M random1.txt.xz
20M random2.txt
21M random2.txt.bz2
21M random2.txt.gz
21M random2.txt.xz
40M random_cat.txt
41M random_cat.txt.bz2
41M random_cat.txt.gz
41M random_cat.txt.xz
41M randoms.tar
41M randoms.tar.bz2
41M randoms.tar.gz
41M randoms.tar.xz

এটি কি আমার সাধারণত প্রত্যাশা করা উচিত?

এখানে সংকোচনের উন্নতি করার কোনও উপায় আছে?


আপনার পরীক্ষার কেসগুলি খারাপ উদাহরণ। আপনার পরীক্ষাটি চেষ্টা করে দেখুন, বলুন, ~ 100 (বাস্তব) পাঠ্য ফাইলের ডিরেক্টরি।
lcd047

কেন এটি একটি খারাপ উদাহরণ? আমরা ঠিক কি আশা করতে হবে জানি। একটি এলোমেলো ফাইল সংকোচিত করা যায় না এবং এলোমেলো ফাইলের 2 টি অর্ধেক সংকুচিত করা যায়।
প্রেক্সোলাইটিক

"এলোমেলো" ফাইল সামগ্রীগুলি একটি সমস্যা are তারা সংকোচনের। আরও ভাল ধারণা পেতে দুটি পৃথক বড় টেক্সট ফাইল ব্যবহার করুন। এখানে সম্পর্কিত সম্পর্কিত ধারণাটি হ'ল "নরমালাইজড কম্প্রেশন পার্থক্য"। এই ধরণের পরীক্ষার মাধ্যমে আপনি কী ধরণের সমস্যার মুখোমুখি হতে পারেন তা দেখতে আপনি ims.cuhk.edu.hk/~cis/2005.4/01.pdfএকবার দেখে নিতে পারেন।
ব্রুস এডিগার

উত্তর:


11

আপনি সংক্ষেপকটির "ব্লক আকার" এর বিপরীতে আছেন। বেশিরভাগ সংক্ষেপণ প্রোগ্রামগুলি ব্লকগুলিতে ইনপুটটি ভেঙে দেয় এবং প্রতিটি ব্লককে সংকুচিত করে। এটি প্রদর্শিত হয় যে bzip ব্লকের আকারটি কেবল 900K পর্যন্ত চলে যায়, সুতরাং এটি পুনরুক্তি করতে 900K বাইটের চেয়ে বেশি সময় নেয় এমন কোনও প্যাটার্ন দেখতে পাবে না।

http://www.bzip.org/1.0.3/html/memory-management.html

gzip 32K ব্লক ব্যবহার করে দেখা যাচ্ছে।

এক্সজেডের সাথে আপনি ভাগ্যের সাথে থাকলেও! ম্যান পৃষ্ঠা থেকে:

   Preset   DictSize   CompCPU   CompMem   DecMem
     -0     256 KiB       0        3 MiB    1 MiB
     -1       1 MiB       1        9 MiB    2 MiB
     -2       2 MiB       2       17 MiB    3 MiB
     -3       4 MiB       3       32 MiB    5 MiB
     -4       4 MiB       4       48 MiB    5 MiB
     -5       8 MiB       5       94 MiB    9 MiB
     -6       8 MiB       6       94 MiB    9 MiB
     -7      16 MiB       6      186 MiB   17 MiB
     -8      32 MiB       6      370 MiB   33 MiB
     -9      64 MiB       6      674 MiB   65 MiB

সুতরাং "xz -8" 32MB অবধি এবং "xz -9" পর্যন্ত 64MB নিদর্শনগুলি খুঁজে পেতে পারে। তবে সাবধান থাকুন যে সংক্ষেপণটি সম্পাদন করতে (এবং সঙ্কোচন করার জন্য) কতটা র্যাম প্রয়োজন is


1
হ্যাঁ, এক্সজেড -8 পরীক্ষায় টার্বল এবং বিড়ালকে সঙ্কুচিত করে 21 এম করে তোলে।
প্রেক্সোলাইটিক

1
এটি ব্লকের আকার ছাড়াও আরও অনেক কিছু রয়েছে। তবে পুরো গল্পটি এমন কিছু নয় যা SE এর কয়েকটি অনুচ্ছেদে ব্যাখ্যা করা যেতে পারে।
lcd047

1
@ প্রেক্সিওলিটিক ডেটা সংক্ষেপণের উপর একটি কোর্স সাহায্য করতে পারে।
lcd047

1
@ lcd047 সংক্ষেপণ একটি বিশাল বিষয় তবে এখানে প্রশ্নটি কেবল "কেন এই সংকোচন করল না" এবং উত্তরটি হ'ল কারণ সংকোচন পুনরাবৃত্তি প্যাটার্নগুলিতে কাজ করে এবং যে প্যাটার্নটি তিনি চেয়েছিলেন যে কোনও সরঞ্জাম অনুসন্ধানের চেয়ে তার পুনরুত্পাদন করতে আরও সময় লাগবে।
ডেটালেস

1
আমি আরও জানতে চাই যে এটি বেশিরভাগ কমান্ড লাইন সংক্ষেপকগুলিতে "-9" এর অর্থ "নিদর্শনগুলি সন্ধান করার জন্য আরও কঠোর চেষ্টা করুন" না, এর অর্থ "বৃহত্তর প্যাটার্ন স্পেস বিবেচনা করুন"।
ডেটালেস

2

আপনার চয়ন করা এলোমেলো ফাইলের সামগ্রীটি ভাল উদাহরণ নয় - সংকোচিত টারফিলগুলি মূলগুলির চেয়ে বড় হবে । আপনি ইতিমধ্যে ফর্ম্যাটগুলি সংকুচিত করতে ফাইলগুলির সাথে একই দেখতে পাবেন (উদাহরণস্বরূপ অনেকগুলি চিত্র / অডিও / ভিডিও ফর্ম্যাট)।

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



@ কোস এটি একটি ব্যবহৃত অ্যালগরিদম এবং ডেটা নির্ভর করে। উদ্ধৃত 33% একটি খুব বিশেষ ক্ষেত্রে। Gzip এবং bzip2 এর সাহায্যে আমি 1000 এলোমেলোভাবে 1MB ফাইল উত্পন্ন যা প্রতিটি ফাইলে <1% বৃদ্ধি পেয়েছিল আমি পরিমাপ করেছি ।
জোফেল

2

ইতিমধ্যে ইঙ্গিত হিসাবে:

  1. এলোমেলো ফাইলগুলি ব্যবহার করা ভাল না কারণ তারা ইতিমধ্যে সর্বাধিক "ইনফরমেশন এন্ট্রপি" ধারণ করে, তাই সংকোচিত হবে না;
  2. সুষ্ঠু তুলনার জন্য আপনাকে প্রচুর ফাইল প্যাক করতে হবে ।

আরও ভাল পরীক্ষার ক্ষেত্রে এটি হতে পারে:

cd /var/tmp
tar -zcf test1.tar /usr
tar -cf test2.tar /usr
gzip test2.tar
ls -h

(দ্রষ্টব্য: আশা করছি কোনও মাউন্টের অধীনে নেই /usr!)

tar -jcfপরিবর্তে আপনি xz সংক্ষেপণের জন্য ব্যবহার করতে পারেন ।

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

উদাহরণস্বরূপ, আমাদের অফসাইট ব্যাকআপে আমরা প্রায় 4,000,000 ফাইল প্রায় 2TB ব্যাক আপ করি। সুতরাং প্রথম পদ্ধতিটি আরও দ্রুত এবং অতিরিক্ত 2TB ডিস্কের প্রয়োজন হয় না doesn't


সংরক্ষণাগারটি-z সংকোচন করে না (অর্থাত্ টার)? সাধারণত এটি জোর দেওয়ার জন্য .tar.gz দিয়ে শেষ হওয়া আউটপুট ফাইলের নাম । czf
জারি কেইনেনেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.