ব্যবহারিক নির্দেশনা / ব্যাকআপ পরীক্ষা

VPS ব্যাকআপ ও রিস্টোর হাতে-কলমে যাচাই করুন

Backup file আছে দেখেই ভরসা করবেন না। দুটি ছোট file-এর archive তৈরি, server-এর বাইরে copy এবং checksum মিলিয়ে restore অনুশীলন করুন। এটি পুরো server বা database recovery-এর বিকল্প নয়।

· হালনাগাদ · পড়তে প্রায় 4 মিনিট

এই নির্দেশনায়

অনুশীলনের সীমানা নির্ধারণ করুন

Server-এ Bash, GNU tar ও sha256sum এবং client-এ Bash/OpenSSH লাগবে। Linux বা WSL ব্যবহার করতে পারেন। Server-এর জন্য এক terminal ও client-এর জন্য অন্য terminal খোলা রাখুন—পরবর্তী ধাপে একই variables লাগবে। Error হলে থামুন।

এই অনুশীলন home-এর ভেতরে disposable file ব্যবহার করে। Root-এ archive extract বা live site overwrite হবে না। চাইলে setup guide-এর দুইটি readable file-এর copy নিতে পারেন, কিন্তু database, upload, DNS, certificate ও অন্যান্য dependency আলাদা inventory-তে রাখুন।

নিরাপদ sample তৈরি করুন

umask 077
backup_lab=$(mktemp -d "$HOME/ubuntu-vps-backup.XXXXXX")
mkdir -p "$backup_lab/payload/site" "$backup_lab/payload/nginx" "$backup_lab/export"
printf '%s\n' '<!doctype html><html lang="en"><title>Restore drill</title><h1>Recovered static page</h1></html>' > "$backup_lab/payload/site/index.html"
printf '%s\n' 'server {' '    listen 8080;' '    server_name example.test;' '    root /var/www/first-site;' '}' > "$backup_lab/payload/nginx/first-site.conf"
printf 'Practice directory: %s\n' "$backup_lab"

এখানকার Nginx configuration নিষ্ক্রিয় sample। Live site-এর দুটি file নিতে চাইলে কেবল practice copy বদলান। Content-এ secret আছে কি দেখুন এবং consistent copy-এর সময় deploy থামান। Sample দিয়েই শিখলে পরের block বাদ দিন।

install -m 600 /var/www/first-site/index.html "$backup_lab/payload/site/index.html"
install -m 600 /etc/nginx/sites-available/first-site "$backup_lab/payload/nginx/first-site.conf"

Certificate private key বা পুরো filesystem এই ছোট archive-এর অংশ নয়। অতিরিক্ত file দরকার হলে manifest-এ স্পষ্টভাবে যোগ করুন।

File এবং archive checksum তৈরি করুন

(
    cd "$backup_lab/payload" &&
    sha256sum site/index.html nginx/first-site.conf > SHA256SUMS
)
tar -czf "$backup_lab/export/static-site.tar.gz" -C "$backup_lab/payload" site nginx SHA256SUMS
(
    cd "$backup_lab/export" &&
    sha256sum static-site.tar.gz > static-site.tar.gz.sha256
)
tar -tzf "$backup_lab/export/static-site.tar.gz"
printf 'Server export directory: %s\n' "$backup_lab/export"

Payload অপরিবর্তিত রাখুন। Archive-এ relative path-এ site ও nginx-এর দুই file এবং SHA256SUMS থাকে। Checksum অনিচ্ছাকৃত পরিবর্তন ধরতে পারে; attacker archive ও checksum দুটোই বদলালে তা authenticity প্রমাণ করে না।

নিজের computer-এ স্বাধীন copy নিন

Server-এ দেখানো exact path remote_backup-এ বসান। REPLACE placeholder, IP, user ও key নিজের তথ্য দিয়ে বদলান।

umask 077
recovery_dir=$(mktemp -d "$HOME/ubuntu-vps-restore.XXXXXX")
remote_backup=/home/deploy/ubuntu-vps-backup.REPLACE/export
scp -i ~/.ssh/ubuntu_vps "deploy@203.0.113.10:$remote_backup/static-site.tar.gz" "$recovery_dir/"
scp -i ~/.ssh/ubuntu_vps "deploy@203.0.113.10:$remote_backup/static-site.tar.gz.sha256" "$recovery_dir/"

Host fingerprint সন্দেহ হলে বিশ্বস্তভাবে SSH পরিচয় যাচাই করুন, verification bypass করবেন না। SSH পরিবহন encrypt করে; tar.gz compression নিজে encryption নয়। সংরক্ষিত copy-এর access ও encryption পরিকল্পনা করুন। একই VPS-এর অন্য folder স্বাধীন backup নয়।

নতুন খালি directory-তে restore করুন

(
    cd "$recovery_dir" &&
    sha256sum -c static-site.tar.gz.sha256
)
tar -tzf "$recovery_dir/static-site.tar.gz"

Archive checksum OK হতে হবে। ব্যর্থ হলে checksum file বদলে মিলাবেন না; transfer বা source পরীক্ষা করুন। নিজের তৈরি trusted archive নতুন খালি directory-তে extract করুন, পুরোনো file রেখে। Root হিসেবে extract বা archived owner পুনরায় চাপানো এড়ান।

restore_dir=$(mktemp -d "$recovery_dir/restored.XXXXXX")
tar -xzf "$recovery_dir/static-site.tar.gz" -C "$restore_dir" --keep-old-files --no-same-owner
(
    cd "$restore_dir" &&
    sha256sum -c SHA256SUMS
)
cat "$restore_dir/site/index.html"

দুটি file-এর checksum OK এবং নিজের page heading মিলতে হবে। এতে file content পরীক্ষা হয়; original owner, ACL অথবা চলমান service-এর পূর্ণ recovery নিশ্চিত হয় না।

Production recovery-তে যা যোগ হবে

Replacement Nginx environment-এ include, module, permission ও certificate path মিলিয়ে assembled configuration পরীক্ষা করুন। অপরিবর্তিত live Nginx-এ syntax test চালানো restore-এর পরীক্ষা নয়। বাদ পড়া TLS key/certificate নিরাপদ copy থেকে আনুন অথবা certificate নতুন করে নিন।

Active database-এর file সাধারণ tar copy-তে inconsistent হতে পারে; database-সমর্থিত dump বা consistent backup পদ্ধতি দরকার। Snapshot-এর retention, একই provider-এর failure domain এবং restore path যাচাই করুন। Snapshot থাকা নিজে recovery-এর প্রমাণ নয়।

সময়, দায়িত্ব ও ব্যর্থতার সতর্কতা রাখুন

RPO হলো কতটা সাম্প্রতিক data হারানো গ্রহণযোগ্য, RTO হলো recovery সময়ের লক্ষ্য। 24 ঘণ্টা ও 60 মিনিট উদাহরণ, এখানে মাপা ফল নয়। Daily job নিয়মিত সফল হলেই daily protection দেয়।

ছোট পর্দায় সব কলাম দেখতে টেবিলটি পাশে স্ক্রল করুন।

রেকর্ডযা লিখবেন
CopyVersion, destination ও retention
IntegrityArchive ও restored file checksum
সময়শুরু, শেষ এবং সম্পূর্ণ সেবা ফেরার সময়
Dependencyঅনুপস্থিত package, secret, DNS ও certificate
বাহ্যিক পরীক্ষানতুন পরিবেশে public HTTPS ও app workflow

পুরো recovery মাপুন: access, provision, config, certificate, DNS ও application test। শুধু local extraction-এর সময় নয়। একাধিক recovery point এবং failed-job alert রাখুন। Backup storage-এর খরচ VPS budget-এ ধরুন।

প্রশ্ন ও উত্তর

Checksum মিলে গেলে মূল data মুছে দেব?

না। Retention ও পূর্ণ recovery test অনুযায়ী সিদ্ধান্ত নিন। একমাত্র ভালো copy তাড়াহুড়ো করে মুছবেন না।

Checksum কি বাদ পড়া database ধরবে?

Manifest-এ না থাকা data, secret বা DNS checksum পরীক্ষা আবিষ্কার করতে পারে না। সম্পূর্ণ inventory ও app recovery test দরকার।

মূল ইংরেজি অনুশীলনের sample GNU tools দিয়ে Windows-এর Git Bash-এ পরীক্ষা করা হয়েছে। Remote Ubuntu, SCP transfer, certificate ও active service পুনরুদ্ধারের পূর্ণ পরীক্ষার দাবি নয়।

সম্পর্কিত নির্দেশনা