কত ডিস্ক-স্পেস ব্যবহার করা হত তা গণনা করুন


25

লিনাক্সে এমন কোনও প্রোগ্রাম রয়েছে যা একটি প্রোগ্রাম কতটা ডেটা তৈরি করতে পারে তা গণনা করতে পারে?

উদাহরণস্বরূপ, আমি যদি আমার মাইএসকিউএল ডাটাবেসের ব্যাকআপ নিতে চাই তবে আমি সাধারণত করতাম

mysqldump > dumpfile.sql

পরিবর্তে আমি পুনঃনির্দেশ করতে চাই /dev/nullতবে গণনা করুন যে কতটা ডিস্ক-স্পেস ব্যবহার করা হত

mysqldump | fancy_space_calc_program

আউটপুট:

123456789 Bytes would have been used

দ্রষ্টব্য, মাইএসকিউএল ব্যাকআপ কেবল একটি উদাহরণ। আমি আগে থেকে কীভাবে আকারটি অনুমান করতে পারি সে সম্পর্কে আমি খুব ভালভাবে অবহিত, সুতরাং দয়া করে সে সম্পর্কে কোনও মন্তব্য করবেন না।


1
আমি এমনকি আপনি সত্যিই একটি করতে পারেন বলে মনে করি না; নির্দিষ্ট ক্ষেত্রে হ্যাঁ, তবে সাধারণ ব্যবহার নয়, কারণ কোনও অ্যাপ্লিকেশন যদি কিছু সার্ভার কল করে এবং সেখান থেকে ডেটা ডাউনলোড করে তবে আপনি কীভাবে অনুমান করতে পারবেন - বিদেশী অ্যাপ্লিকেশনে আপনি এই জাতীয় জিনিসগুলি অনুমান করার কোনও সুযোগ নেই। সুতরাং এটি প্রতি অ্যাপ্লিকেশনটি হবে - যেমন আপনি লিখেছেন যে আপনি এমওয়াইএসকিউএল-এর জন্য ইতিমধ্যে জানেন - সেখানে কোনও ব্যাখ্যা নেই, তবে অন্যান্য অ্যাপ্লিকেশন - প্রতি অ্যাপ্লিকেশন কোনও সাধারণ সরঞ্জাম সঠিকভাবে এই ভবিষ্যদ্বাণী করতে পারে না।
ড্রকো

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

1
হ্যাঁ, আমি এটি সম্পর্কে ভাল জানি aware এটি এখনও আমার পক্ষে যথেষ্ট ভাল।
অভিনব প্যান্টস

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

@ জোনবেন্টলি আমি কখনই আপনাকে বলিনি যে আপনি এটি রাখতে পারবেন না, আরও মনোযোগ সহকারে পড়ুন: "আমি যেমন লিখেছিলাম যে সাধারণ অনুমানটি ঠিক তেমন বা কাছাকাছিও হতে পারে না :)" এবং এখন ভাবুন যে আমার অ্যাপটি চালানোর পরে নিজেই, প্লাগইনগুলির আপডেটগুলি পরীক্ষা করবে , ইত্যাদি এবং আই-নেট থেকে এক্স পরিমাণ পরিমাণ ডেটা ডাউনলোড করবে এবং এটি আপনার এইচডি ডি তে সঞ্চয় করবে; আপনি আমার অ্যাপ্লিকেশন সম্পর্কে কিছু না জেনে সাধারণ সরঞ্জাম দিয়ে কীভাবে অগ্রিমভাবে পরিমাপ করতে যাচ্ছেন, এটি চালানোর পরে কত স্টোরেজ প্রয়োজন হবে? তবুও আপনি স্বীকৃত উত্তর দিয়ে আপনার সেরা অনুমান করতে পারেন এবং অনেক ক্ষেত্রে এমনকি বেশ সুনির্দিষ্টও হতে পারেন।
ড্রোকো

উত্তর:


37

Https://stackoverflow.com/questions/13418688/use-pipe-with-du-to-compute-size-of-stdin থেকে নেওয়া

wc -cপাইপলাইন দিয়ে যাওয়া বাইটের সংখ্যা গণনা করতে আপনি এটি পাইপ করতে পারেন ।

অবশ্যই এটি কেবল কাঁচা বাইট, এবং সেক্টরের আকার ইত্যাদির সাথে কিছুই করার নেই, তাই এটি লবণের দানা দিয়ে নিয়ে যান ...


যেমনটি আমি লিখেছিলাম সাধারণ পূর্বাভাসটি সুনির্দিষ্ট বা খুব কাছের হবে না :)
ড্রকো

6
@ কেট একটি ভাল বাস্তবায়ন wcডেটা বাতিল করে দেবে যত তাড়াতাড়ি ব্যবহারিক হিসাবে এর প্রয়োজন নেই।
রুসলান

2
@ কেট আমার মনে হয় এটি বাফার হওয়ার সম্ভাবনা নেই, যেহেতু লাইন বা চরিত্রগুলি গণনা করার জন্য আপনার বাফারিংয়ের দরকার নেই। wcআমার কম্পিউটারে থাকা জিএনইউ কোর্টিলগুলি কেবল 8 জিবি মেমরির সাহায্যে 40 গিগাবাইট স্টিডিন ডেটা সহজেই পরিচালনা করে।
ফ্রেক্সট্রেম

8
@Magnus। আমার মনে হয় আপনি ওয়ার্ডপ্লে মিস করেছেন। আমেরিকানরা বাথরুমকে ডাকে ডব্লিউসি একটি ব্রিটিশ শব্দ। আপনি WC- তে অব্যবহৃত ডেটা পাইপ করছেন
তহবিল মনিকার লসুইট

3
@Frxstrem আপনি অবশ্যই কি হিসাবে আপনি কোনো isomorphic এনকোডিং এর সাথে কাজ করে যাচ্ছি যত তাড়াতাড়ি - প্রয়োজন বাফার উপলব্ধ লাইন বা অক্ষর গণনা। যেহেতু POSIX.2, wc -cঅক্ষর গণনা করে না - এটি বাইট গণনা করে। wc -mঅক্ষর গণনা। সর্বাধিক সুস্পষ্ট পার্থক্যটি ইউটিএফ -16 বা উইন্ডোজ \r\n(এএসসিআইআইতে দুটি বাইট, তবে একটি অক্ষর) এর মতো মাল্টি-বাইট অক্ষরগুলিতে । এটি অগত্যা বেশিরভাগ সময় বাফারিংয়ের প্রয়োজন হয় না, তবে ইউনিকোডের একটি একক চরিত্রের প্রতিনিধিত্ব করার জন্য নির্বিচারে বাইট থাকতে পারে; আপনি বিশ্বস্ত ডেটাতে দেখতে চাইছেন এমন কিছু নয়, তবে একটি সম্ভাব্য বাফার ওভারফ্লো ভেক্টর।
লুয়ান

28

কমান্ড পিভি এই জন্য উপযুক্ত।

mysqldump | pv -b > /dev/null

আমি মনে করি উপরেরগুলি আপনাকে যে সঠিক কমান্ডটি চাইবে তা দেবে, এটির জন্য কিছু সামঞ্জস্যের প্রয়োজন হতে পারে pv -b | > /dev/nullযেমন আমি এখনই পরীক্ষা করতে পারি না

-b বাইটে আপনাকে একটি মান দেয়।


1
পবিত্র, আমি পিসি পাশাপাশি ডাব্লিউসি সম্পর্কে ভুলে গেছি। নিজের প্রতি লজ্জা. আমি উভয় উত্তর গ্রহণ করতে চাই। সুতরাং, দুঃখিত, তবে ম্যাগনাস কিছুটা দ্রুত ছিলেন এবং তিনি খ্যাতিটি ব্যবহার করতে পারেন।
অভিনব প্যান্টস

হ্যাঁ কোনও উদ্বেগ নয়, ডাব্লুসি ট্রিকটি সত্যই দুর্দান্ত, কেন তা তাত্ক্ষণিকভাবে আমার কাছে টিবিএইচ ঘটেছিল তা নিশ্চিত নয়। আমি প্রথম গিয়েছিলাম 'বার!' তখন বুঝতে পারলাম আমি কী বোঝাতে চেয়েছি! :)
djsmiley2k - CoW

এবং এখন আপনি আমাকে ফাইল হ্যান্ডেলটি
ধরার

2
আমি এর pvআগে কখনও শুনিনি .. আপনি প্রতিদিন নতুন কিছু শিখেন :)
ম্যাগনাস

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

0

আপনি ddএটির জন্য এটি ব্যবহার করতে পারেন cat /dev/zero | dd status=progress of=/dev/null bs=4M

এটি আপনাকে প্রদত্ত ডেটার পরিমাণ সম্পর্কে কার্যকর করার সময় এবং পরে কিছু তথ্য সরবরাহ করে, যেমন:

$ cat /dev/zero | dd status=progress of=/dev/null                                                                                                                              
5371334656 bytes (5.4 GB, 5.0 GiB) copied, 4 s, 1.3 GB/s^C # this is progress data
12271136+0 records in #summary
12271135+0 records out #summary
6282821120 bytes (6.3 GB, 5.9 GiB) copied, 4.66683 s, 1.3 GB/s #summary
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.