আমি কীভাবে টার, জিজিপ, আরএসএনসি সহ স্পার্স ফাইলগুলিতে অপারেশনগুলি গতি বাড়িয়ে তুলতে পারি?


9

আমার কাছে একটি স্পার ফাইল রয়েছে। ( du -h3 du -h --apparent-sizeজি রিপোর্ট করে এবং 100 জি রিপোর্ট করে)) এখন পর্যন্ত, খুব ভাল।

এখন, আমি যখন ফাইলটি ব্যবহার করে সংকুচিত করতে tarবা এটি ব্যবহার করে নেটওয়ার্কের মাধ্যমে প্রেরণ করতে চাই, তখন rsync3G এর জন্য তত সময় প্রয়োজন। দেখে মনে হচ্ছে এই সরঞ্জামগুলি সমস্ত শূন্য পড়েছে।

আমি ভেবেছিলাম যে গর্তগুলি কোনওভাবে চিহ্নিত হয়েছে এবং এই সরঞ্জামগুলি কি কোনওভাবে কেবল এড়িয়ে যেতে পারে?

আমার ফাইলটি নিয়ে কোনও সমস্যা নেই?

এই একটি অনুপস্থিত বৈশিষ্ট্য tarএবং rsyncবিক্ষিপ্ত ফাইলের জন্য না চেহারা? আমি tarপ্যারামিটারটি ব্যবহার করেছি --sparse, তবে এটি জিনিসগুলিকে গতি দেয়নি। উভয়ই rsyncপ্যারামিটার করেনি --sparse

স্পার্স ফাইলগুলিতে এই সরঞ্জামগুলির গতি বাড়ানোর কোনও উপায় আছে কি?

উত্তর:


7

bsdtar(কমপক্ষে libarchive৩.১.২ থেকে ) FS_IOC_FIEMAPফাইল ফাইলগুলিতে আইওসিটিএল ব্যবহার করে এটি সমর্থন করে এমন বিচ্ছিন্ন বিভাগগুলি সনাক্ত করতে সক্ষম হয়েছে (যদিও এটি বেশ কয়েকটি অন্যান্য এপিআই সমর্থন করে) তবে কমপক্ষে আমার পরীক্ষায় আশ্চর্যের বিষয় যথেষ্ট, এটি যথেষ্ট tarএটি নিজে তৈরি করা ফাইলগুলি পরিচালনা করতে সক্ষম নয় (যদিও এটি বাগের মতো দেখায়)।

তবে tarতাদের নিষ্কাশনের জন্য জিএনইউ ব্যবহার করে কাজ করে তবে জিএনইউ টার বিএসডিটার সমর্থন করে এমন কিছু বর্ধিত বৈশিষ্ট্য পরিচালনা করতে পারে না।

সুতরাং

bsdtar cf - sparse-files | (cd elsewhere && tar xpf -)

যতক্ষণ না ফাইলগুলির বর্ধিত বৈশিষ্ট্য বা পতাকা না থাকে ততক্ষণ কাজ করে।

এটি এখনও এমন ফাইলগুলির জন্য কাজ করে না যা পুরোপুরি বিচ্ছিন্ন (কেবল জিরো) FS_IOC_FIEMAPআইওসিটিএল হিসাবে 0 টি পরিমাণ ফিরে আসে এবং দেখে মনে হচ্ছে bsdtarএটি সঠিকভাবে পরিচালনা করে না (অন্য কোনও বাগ?)।

star( শিলি ট্যার ) হ'ল আরেকটি ওপেনসোর্স ট্যারে বাস্তবায়ন যা স্পার্স ফাইলগুলি সনাক্ত করতে পারে ( -sparseবিকল্পটি ব্যবহার করুন ) এবং এতে যে বাগগুলি নেই bsdtar(তবে এটি অনেকগুলি সিস্টেমে প্যাকেজড নয়)।


2

এই নিবন্ধটিতেrsync কমপক্ষে কিছু দরকারী পরামর্শ রয়েছে :

সমস্যা

ব্যবহার করে rsync --sparse works, তবে একটি বিশাল অযথা ডিস্ক লেখার কারণ হয়। 50 গিগাবাইট দীর্ঘ (1 জিবি ব্যবহৃত) এ 10 বাইট পরিবর্তন করার ফলে কেবল একটি বা দুটি ব্লক লেখা উচিত, যার ফলে 1GB লেখা যায়। এটি ধীর এবং সম্ভবত ডিস্কগুলির দীর্ঘায়ু জন্য ভাল না।

rsync --inplaceকাজগুলি ব্যবহার করে, তবে অ-স্পার্স ফাইল তৈরি করে।

আপনি একই সময়ে স্পার্স এবং - স্থান ব্যবহার করতে পারবেন না :-( এটি আরএসসিএনসি দ্বারা অনুমোদিত নয় rs

সমাধান

আপনি যদি প্রাক-বিদ্যমান স্পার্স ফাইল আপডেট করতে --inplace ব্যবহার করেন তবে ফাইলটি খুব কমই থাকবে এবং কেবলমাত্র অল্প সংখ্যক ব্লক লেখা থাকবে। এটি কেবল তখনই যখন সিএসএনসি - ইনপ্লেস কোনও ফাইল তৈরি করে যা এটি অ-বিচ্ছিন্ন করে তোলে।

সুতরাং সমাধানটি হ'ল উত্স মেশিনের প্রতিটি ফাইলের জন্য লক্ষ্য মেশিনে একটি সম্পর্কিত, সঠিক-দৈর্ঘ্য, খালি, স্পারস ফাইল তৈরি করা - যদি ফাইলটি এখনও লক্ষ্য মেশিনে উপস্থিত না থাকে।

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

সুতরাং, আমি যদি এটি সঠিকভাবে পড়ে থাকি তবে আপনি প্রথমে লক্ষ্যবস্তুতে একটি ফাঁকা ফাঁকা ফাইল তৈরি করতে চান। আপনি এটি দিয়ে এটি করতে পারেন

truncate -s 3G filename

তারপরে আপনি rsync --inplaceফাইলগুলি অনুলিপি করতে ব্যবহার করতে পারেন । এটি একবারে প্রয়োজনীয় হওয়া উচিত।


একই প্রবন্ধে ব্যবহার প্রস্তাব দেওয়া Virtsync যা

বিশাল ফাইলগুলির বিষয়বস্তু (যেমন ভার্চুয়াল মেশিন ডিস্ক চিত্র এবং ডাটাবেসগুলি) সিঙ্ক্রোনাইজ করার জন্য একটি 49 ডলার বাণিজ্যিক লিনাক্স কমান্ড-লাইন সরঞ্জাম।

এটি সর্বোত্তম সমাধান হতে পারে যদি আপনি এটির জন্য অর্থ প্রদান করতে ইচ্ছুক যেহেতু এটি এই ধরণের পরিস্থিতির জন্য বিশেষত লিখিত হয়েছে বলে মনে হয়।

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