সম্পাদকরা কোনও ফাইল সংরক্ষণ করতে বিভিন্ন কৌশল অনুসরণ করতে পারে। দুটি প্রধান ভেরিয়েন্টগুলি হ'ল বিদ্যমান ফাইলটি ওভাররাইট করা বা একটি নতুন ফাইলে লিখতে এবং এটিকে স্থানান্তরিত করা। একটি নতুন ফাইলে লিখতে এবং এটিকে জায়গায় স্থানান্তরিত করে এমন দুর্দান্ত সম্পত্তি রয়েছে যা সময়ে সময়ে ফাইল থেকে পড়া আপনাকে ফাইলের একটি সম্পূর্ণ সংস্করণ দেয় (একটি তাত্ক্ষণিক পুরানো, পরের তাত্ক্ষণিক নতুন)। যদি ফাইলটি জায়গায় পরিবর্তিত হয় তবে এমন একটি সময় থাকে যা অসম্পূর্ণ থাকে, যা সমস্যা সমাধান করে যদি অন্য কোনও প্রোগ্রাম ঠিক তখনই প্রবেশ করে বা সিস্টেম ক্র্যাশ হয়ে থাকে।
ন্যানো দৃশ্যত বিদ্যমান ফাইলটি ওভাররাইট করে। আপনার স্ক্রিপ্টটি লেখার ( close_writeইভেন্ট) শেষ করার পরে পয়েন্টটি সনাক্ত করে এবং rsyncসেই সময়ে চলে। নোট করুন যে আরএসসিএনসি প্রথম সেভ থেকে কাজ সরিয়ে নেওয়ার আগে, যদি আপনি দ্রুত পরপর দুটি বার সংরক্ষণ করেন তবে ফাইলের অসম্পূর্ণ সংস্করণটি ধরা সম্ভব grab
অন্যদিকে, ভিম লেখার-পরে-সরানোর কৌশলটি ব্যবহার করে - এর প্রভাবের কিছু
echo 'new content' >somefile.new
mv -f somefile.new somefile
ফাইলটির পুরাতন সংস্করণে যা ঘটে তা হ'ল এটি সেই স্থানে মুছে ফেলা হয় যেখানে নতুন সংস্করণটি স্থানান্তরিত হয়। এই মুহুর্তে, inotifywaitকমান্ডটি ফিরে আসে, কারণ এটি দেখার জন্য বলা ফাইলটি আর বিদ্যমান নেই no ( somefileএকই নামের নতুন একটি আলাদা ফাইল)) যদি ভিম একটি ব্যাকআপ ফাইল তৈরির জন্য কনফিগার করা থাকে, তবে কী ঘটবে তা হ'ল
echo 'new content' >somefile.new
ln somefile somefile.old
mv -f somefile.new somefile
এবং inotifywaitএখন ব্যাকআপ দেখা হবে।
ফাইল সংরক্ষণের কৌশলগুলি সম্পর্কে আরও তথ্যের জন্য দেখুন একটি প্রোগ্রাম চলাকালীন কোনও লাইভ আপডেট করা কীভাবে সম্ভব? এবং ফাইল অনুমতি এবং সংরক্ষণ
উইমকে ওভাররাইট কৌশলটি ব্যবহার করতে বলা যেতে পারে: backupcopyবিকল্পটি বন্ধ করুন ( :set nobackupcopy)। এটি ঝুঁকিপূর্ণ, উপরে উল্লিখিত হিসাবে।
উভয় সংরক্ষণ কৌশলগুলি পরিচালনা করতে, ডিরেক্টরিটি দেখুন এবং উভয় close_writeএবং moved_toইভেন্টগুলিকে ফিল্টার করুন somefile।
inotifywait -m -e close_write,moved_to --format %e/%f . |
while IFS=/ read -r events file; do
if [ "$file" = "somefile" ]; then
…
fi
done