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

কমান্ড লেখার আগে ঠিক করুন কোন অনুলিপি জিতবে

দিকটি একটি বাক্যে লিখুন, প্রতিটি পক্ষের হোস্টনাম ও পথ সহ, এবং যিনি ডেটার মালিক তাঁর সম্মতি নিন। এই নির্দেশিকায় উৎস /srv/publish/ এবং গন্তব্য fileserver.example-এ একটি অ্যাকাউন্ট যা কেবল /srv/mirror/-এ লিখতে পারে।

অনুলিপির আগে পরিবহনের তথ্য নিশ্চিত করুন: SSH হোস্ট কী যাচাই হয়েছে, গন্তব্য অ্যাকাউন্ট প্রতিলিপি এলাকায় লিখতে পারে এবং অন্য কোথাও নয়, এবং দুই হোস্টেরই সামঞ্জস্যপূর্ণ rsync সংস্করণ আছে। এই পূর্বশর্তগুলো একটি ছোট পরিকল্পনা ভুলকে অনুমতির ঘটনায় পরিণত হতে বাধা দেয়। তারা এটাও বলে দেয় যে কিছু ভুল হলে গন্তব্যের লগে কোন অ্যাকাউন্ট দেখা যাবে।

অনুলিপি প্রাকদর্শন করুন এবং বিস্তারিত তালিকা পড়ুন

অনুলিপি প্রথমে প্রাকদর্শন পতাকাসহ চালান এবং আউটপুট রেখে দিন। বিস্তারিত পরিবর্তনগুলো বলে প্রতিটি পথে কী ঘটবে, যা পরবর্তী সময়ের সারাংশের চেয়ে অনেক বেশি কাজে লাগে। আউটপুট পরিবর্তন রেকর্ডে রাখুন যাতে পরের বার চালানোর সময় তুলনা করার কিছু থাকে।

rsync -rt --dry-run --itemize-changes -e ssh -- /srv/publish/ [email protected]:/srv/mirror/

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

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

তারপর ঠিক করুন মুছে ফেলা ভ্রমণ করে কি না

গন্তব্যকে আয়নায় পরিণত করা দ্বিতীয় সিদ্ধান্ত, প্রথমটির পরিমার্জন নয়। এটি আলাদাভাবে প্রাকদর্শন করুন, মুছে ফেলার পতাকা যোগ করে এবং আর কিছু না বদলে, যাতে তালিকার পার্থক্য সম্পূর্ণভাবে সেই সিদ্ধান্তের হয়।

rsync -rt --delete --dry-run --itemize-changes -e ssh -- /srv/publish/ [email protected]:/srv/mirror/

মুছে ফেলা সিঙ্ক করা পরিধির ভেতরে গ্রহণকারী পক্ষের অতিরিক্ত ফাইল সরায়, তাই ভুল উৎস পথ, মাউন্ট না করা ডিরেক্টরি বা লক্ষ্যের বেশি বাদ দেওয়া ফিল্টার ধ্বংসাত্মক চালনাকে পরিষ্কার আয়নার মতো দেখাতে পারে। প্রাকদর্শন তালিকাই সেই জায়গা যেখানে এই পার্থক্য ব্যয়বহুল হওয়ার আগে দেখা যায়। যেখানে ডেটা ন্যায্যতা দেয় সেখানে স্বাধীন পুনরুদ্ধার অনুলিপি রাখুন, এবং মনে রাখুন আয়না ইতিহাস সংরক্ষণের বদলে দুর্ঘটনাজনিত মুছে ফেলা বিশ্বস্তভাবে পুনরুৎপাদন করে।

প্রাকদর্শন কিছুই তালাবদ্ধ করে না। মানুষ পরীক্ষা ও আসল চালনার মধ্যে ফাইল সম্পাদনা করে, আর ফাইল সিস্টেমের নিজস্ব মত আছে, তাই আপনি যে চালনা অনুমোদন করেন এবং যে চালনা হয় সেগুলো একই ক্রিয়া নয় যদি না দুই বৃক্ষই শান্ত থাকে।

দুটি একমুখী কাজ মিলে দ্বিমুখী সিঙ্ক হয় না

একই কমান্ড দুই দিকেই চালানো এই পরিস্থিতিতে ডেটা হারানোর সবচেয়ে সাধারণ উপায়। প্রতিটি দিক অন্য পক্ষকে গন্তব্য মনে করে এবং আনন্দের সাথে নতুন বিষয়বস্তুর উপরে লেখে, আর মুছে ফেলা যে ক্রমে সময়সূচি চালু হয় সেই ক্রমেই আয়নায় প্রতিফলিত হয়।

ব্যবহারকারীদের যদি দুই অনুলিপিই সম্পাদনা করতে হয়, এটি আরেকটি পণ্য সিদ্ধান্ত: দ্বন্দ্ব ব্যবস্থাপনা, মুছে ফেলার অনুসরণ এবং সেই মডেলের জন্য তৈরি একটি টুল। সময়সূচির ক্রম দিয়ে এটির কাছাকাছি যাওয়া সেই পথ যাতে একটি ভাগ করা ফোল্ডারে প্রতিটি নথির দুটি সংস্করণ জমে যা কেউ মিলিয়ে দিতে পারে না। দুইটি cron এন্ট্রি আর আশা দিয়ে কাছাকাছি যাওয়ার বদলে এটি স্পষ্টভাবে ঠিক করুন।

নীতি লেখার পরেই স্বয়ংক্রিয় করুন

নির্ধারিত কাজে দিক, পথ, মেটাডেটা নীতি এবং অনুমোদিত মুছে ফেলার সিদ্ধান্ত থাকা উচিত। এই পাঁচটি তথ্য কাজের ফাইলেই রাখুন, কোনো উইকি পাতায় নয় যা পরবর্তী প্রশাসক হয়তো কখনো পড়বেন না। পরস্পর ছাপিয়ে যাওয়া চালনা রোধ করুন, কারণ একই বৃক্ষে একসাথে লেখা দুটি অনুলিপি এমন অবস্থা তৈরি করে যা কেউ চায়নি।

যখন উৎস কোনো জীবন্ত ডেটাবেস বা অন্য বহু-ফাইল ডেটাসেট, তখন আগে অ্যাপ্লিকেশনের সঙ্গে সামঞ্জস্যপূর্ণ রপ্তানি বা সমন্বিত স্ন্যাপশট নিন। ফাইলের পুনরাবৃত্তিমূলক ভ্রমণ লেনদেন নয়, আর পরিবর্তনশীল ডেটাসেটের অনুলিপি সামঞ্জস্যপূর্ণ নয়।

সমাপ্তি ও ব্যর্থতা রেকর্ড করুন, এবং কেবল প্রস্থান কোড নয়, গন্তব্যে ডেটাসেট যাচাই করুন। বাধার পরে VPN পুনরুদ্ধার সংযোগ ফিরিয়ে দেয়; এটি বলে না আগের অনুলিপি শেষ হয়েছিল কি না বা পরস্পরবিরোধী সম্পাদনা কখনো সমাধান হয়েছিল কি না।

সম্পর্কিত নিবন্ধ