লিনাক্সে ভার্চুয়াল ফাইলগুলিতে ফাইলগুলি সংযুক্ত করা


10

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

আমার একটি সমস্যা আছে যেখানে বিভক্ত বাইনারি ফাইল রয়েছে যা বেশ বড় আকারের হতে পারে। আমি বিশাল ডিস্ক আইও দিয়ে আমার স্থানের প্রয়োজনীয়তাগুলি দ্বিগুণ করতে চাই না কেবল কেবলমাত্র এই ফাইলগুলিকে catএকসাথে একটি বিশাল ফাইলে একত্রে লিখিতভাবে লিখিত সামগ্রীগুলি পড়তে / লিখতে ।

আমি এই প্রকল্পটি এখানে পেয়েছি , তবে মনে হচ্ছে এটি খুব নির্দিষ্ট ব্যবহারের ক্ষেত্রে রয়েছে এবং এটি পার্লের উপরও নির্ভর করে


আমার ধারণা, এই ধরণের সমস্যা সমাধানের জন্য ফুস উদ্ভাবিত হয়েছিল। সম্ভবত আপনার নিজের মডিউলটি লিখতে হবে তবে এটি খুব কঠিন হওয়া উচিত নয়।
হউক লেগেছে 14'13

উত্তর:


14

লুপ ডিভাইস এবং ডিভাইস ম্যাপার সংযুক্ত করে আপনি এটি করতে পারেন, "সবকিছুই একটি ফাইল" বলে ধন্যবাদ thanks তবে একটি সীমাবদ্ধতা সহ: ফাইলের আকার পরিবর্তন করা যায় না (কারণ আপনি তাদের কাছে লিখে ব্লক ডিভাইসগুলি বাড়িয়ে তুলতে পারবেন না)। সুতরাং আপনি যদি ডেটা যুক্ত করতে চান তবে আপনাকে একটি বৃহত ব্লক ডিভাইস তৈরি করতে হবে এবং সংযুক্ত ডমি ডেটা ওভাররাইট করতে হবে।

# for testing, Create 4 files
echo foo | dd of=block0 cbs=512 conv=block
echo bar | dd of=block1 cbs=512 conv=block
echo bat | dd of=block2 cbs=512 conv=block
echo baz | dd of=block3 cbs=512 conv=block
# Create a loop device for each of the 4 files
losetup /dev/loop0 block0
losetup /dev/loop1 block1
losetup /dev/loop2 block2
losetup /dev/loop3 block3
# Create a device map named "test" using those loop devices
(
    echo "0 1 linear /dev/loop0 0"
    echo "1 1 linear /dev/loop1 0"
    echo "2 1 linear /dev/loop2 0"
    echo "3 1 linear /dev/loop3 0"
) | dmsetup create test
$EDITOR /dev/mapper/test # use overwrite mode only

ফাইলটি প্রসারিত করার জন্য আপনি একটি বড় স্পার্স ফাইল তৈরি করতে পারেন এবং এটি অতিরিক্ত ডিভাইস হিসাবে ব্যবহার করতে পারেন।


1

এটি লিনাক্সে নামযুক্ত পাইপ ব্যবহার করে করা যেতে পারে।

ধরুন আপনার নামযুক্ত ফাইল রয়েছে file0, file1, file2, file3, file4, file5

# create a name pipe
$ mkfifo mynewfile
# cat to named file
$ cat file{0..5} > mynewfile &

সি প্রোগ্রামারমেটিকভাবে আপনি করতে পারেন

mkfifo(mynewfile , 0777);
system("cat file{0..5} > mynewfile");

তারপরে মাইনিউফিল ব্যবহার করুন আমাদের হিসাবে আপনি সাধারণ ফাইল থেকে পড়তেন।

mynewfile হল ফিফো ফাইল file


0

পড়ার জন্য, আপনি lessএকাধিক ফাইল করতে পারেন এবং তারপরে যাওয়ার জন্য :nএবং :pবিকল্পগুলি ব্যবহার করতে পারেন।

লেখার জন্য, সরাসরি ফাইল অ্যাক্সেস না করে আপনি সেগুলিতে লিখতে সক্ষম হবেন না।

আপনি vimএকাধিক ফাইলও করতে পারেন , এবং এটি কেবল তাদের ক্রম অনুসারে চলে যাবে (যেমন vim fileA fileB fileC- ফাইলবি বন্ধ হয়ে যাওয়ার পরে ফাইলবি খোলা, ফাইলবি বন্ধ হওয়ার পরে ফাইলসি খোলা)।

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