কীভাবে ডিডির মাধ্যমে কোনও ফাইলে ডেটা যুক্ত করবেন?


19

আমি এসএসডিতে সঞ্চিত একটি ফাইলে নতুন ডেটা যুক্ত করতে চাই।

dd if=/dev/shm/test of=/data/sdb/test bs=1G oflag=append

তবে df -h দেখায় dd কমান্ড সর্বদা টেস্ট ফাইলকে ওভাররাইট করে, পরিবর্তে টেস্ট ফাইলটিতে নতুন ডেটা যুক্ত করে। আমি চেষ্টাও করেছি

dd if=/dev/shm/test of=/data/sdb/test bs=1G conv=notrunc

এটিও কাজ করে না।

উত্তর:


12

কি সম্পর্কে:

 dd if=/dev/shm/test bs=1G >>/data/sdb/test

আপনার সমাধান কাজ করে। ধন্যবাদ। তবে আপনি কি জানেন যে আমার সমাধানগুলি কেন কাজ করে না? আমি ম্যান পৃষ্ঠাটি পরীক্ষা করেছি have কারণ খুঁজে পাচ্ছি না। ধন্যবাদ।
শহর


1

লিনাক্সে কার্নেল ৪.১ FALLOC_FL_INSERT_RANGEবিকল্প যুক্ত করা হয়েছিল। fallocate(2) ম্যান পৃষ্ঠা থেকে :

মোডে FALLOC_FL_INSERT_RANGE পতাকা নির্দিষ্ট করে (লিনাক্স ৪.১-এর পরে পাওয়া যায়) কোনও বিদ্যমান তথ্য ওভাররাইট না করে ফাইলের আকারের মধ্যে একটি গর্ত byুকিয়ে ফাইলের স্থান বাড়িয়ে তোলে। গর্তটি অফসেটে শুরু হবে এবং লেন বাইটের জন্য চালিয়ে যাবে। ফাইলের অভ্যন্তরে গর্ত সন্নিবেশ করার সময়, অফসেট থেকে শুরু হওয়া ফাইলের সামগ্রীগুলি লেন বাইট দ্বারা byর্ধ্বমুখী (অর্থাত্ একটি উচ্চতর ফাইল অফসেটে) স্থানান্তরিত হবে। কোনও ফাইলের অভ্যন্তরে একটি গর্ত োকানো লেন বাইট দ্বারা ফাইলের আকার বাড়ে।

এবং সম্প্রতি এই বিকল্পটি সমর্থন যুক্ত করা হয়েছিলutil-linux :

   -i, --insert-range
          Insert a hole of length bytes from offset, shifting existing
          data.

সুতরাং যখন util-linuxসংস্করণ 2.30 প্রকাশিত হবে এবং আপনার লিনাক্স ডিস্ট্রো এই সংস্করণে আপডেট হবে তখন আমরা চালিয়ে একটি ফ্ল্যাশে ফাইলের আকার বাড়াতে সক্ষম করব:

fallocate -i -l 1G -o 128M /path/to/file

128Mবর্তমান ফাইল আকার যেখানে ।


1

কোনও ফাইলগুলিতে বিচ্ছিন্ন ছিদ্র যুক্ত করার সহজ উপায় রয়েছে।

truncateডিডির চেয়ে অনেক দ্রুত 10 বাইট ব্যবহার করে ফাইলটি বাড়ানোর জন্য:

 truncate -s +10 file.txt 

উত্তর পাওয়া গেছে: /server//a/343726/70242

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