−25%

Windows-এর বার্ষিক পেমেন্টে, ৩১ অক্টোবর পর্যন্ত। প্ল্যান দেখুন

EQVPS

restic দিয়ে VPS-এর ব্যাকআপ কীভাবে নেবেন (এনক্রিপ্টেড, সার্ভারের বাইরে)

restic দিয়ে VPS-এর এনক্রিপ্টেড আর পুনরাবৃত্তিহীন ব্যাকআপ: S3-সামঞ্জস্যপূর্ণ স্টোরেজ বা অন্য সার্ভারে রিপোজিটরি, systemd টাইমার, সংরক্ষণ নীতি আর রিস্টোর পরীক্ষা।

সবার ব্যাকআপ থাকে, যতক্ষণ না একটা রিস্টোর করার চেষ্টা করেন। ফোল্ডার খালি বেরোয়, cron জব মার্চে মরে গেছে, বা আর্কাইভটা সেই ডিস্কেই যা এইমাত্র নষ্ট হলো। restic এর বেশিরভাগই সমাধান করে: আপনার দিকে এনক্রিপ্ট করে, ডেটার প্রতিটি টুকরো একবার রাখে, আর একটা ফাইল রিস্টোর করাকে পুরো সার্ভারের ব্যাকআপের মতোই সহজ করে দেয়।

এমন একটা সেটআপ যাতে আমরা সত্যিই ভরসা করতাম, Ubuntu বা Debian-এ।

১. restic ইনস্টল করুন

apt update && apt install -y restic
restic self-update

ডিস্ট্রিবিউশনের প্যাকেজ পিছিয়ে থাকে; self-update বর্তমান সংস্করণ নিয়ে আসে।

২. রিপোজিটরির জায়গা বাছুন

রিপোজিটরি সেই সার্ভারে থাকা চলবে না যেটা আপনি রক্ষা করছেন। দুটো সাধারণ বিকল্প:

৩. অ্যাক্সেসের তথ্য সংরক্ষণ করুন

সবকিছু এমন একটা ফাইলে রাখুন যা শুধু root পড়তে পারে, যাতে টাইমার আর আপনার shell একই সেটিংস ব্যবহার করে:

cat > /root/.restic-env <<'EOF'
export RESTIC_REPOSITORY="s3:https://s3.example.com/my-bucket/web1"
export RESTIC_PASSWORD_FILE="/root/.restic-pass"
export AWS_ACCESS_KEY_ID="your-key-id"
export AWS_SECRET_ACCESS_KEY="your-secret"
EOF
openssl rand -base64 32 > /root/.restic-pass
chmod 600 /root/.restic-env /root/.restic-pass

এবার /root/.restic-pass-এর বিষয়বস্তু পাসওয়ার্ড ম্যানেজারে কপি করুন। এটা ছাড়া ব্যাকআপ ডিক্রিপ্ট হবে না — আপনার দ্বারাও না, অন্য কারও দ্বারাও না।

৪. রিপোজিটরি শুরু করে প্রথম ব্যাকআপ নিন

source /root/.restic-env
restic init
restic backup /etc /home /root /srv /var/www \
  --exclude-caches --exclude '/root/.cache'
restic snapshots

পাথগুলো সেই অনুযায়ী বদলান যেখানে আপনার ডেটা আসলে আছে। Docker ভলিউম থাকে /var/lib/docker/volumes-এ; অ্যাপের ডেটা প্রায়ই /srv বা /opt-এ।

৫. ডেটাবেস: আগে ডাম্প, পরে ব্যাকআপ

চালু ডেটাবেসের কাঁচা ফাইলের ব্যাকআপ নেবেন না। ব্যাকআপের ঠিক আগে ডাম্প নিন:

mkdir -p /var/backups/db
sudo -u postgres pg_dump -Fc mydb > /var/backups/db/mydb.dump

/var/backups/db-কে ব্যাকআপ পাথে যোগ করুন। আমাদের PostgreSQL গাইডে ডাম্প নিয়ে আরও আছে।

৬. systemd দিয়ে সময়সূচি করুন

এখানে টাইমার cron-এর চেয়ে ভালো: এটা journal-এ লগ লেখে আর নির্ধারিত সময়ে সার্ভার বন্ধ থাকলে বাদ পড়া রান পরে পূরণ করে।

# /etc/systemd/system/restic-backup.service
[Unit]
Description=restic backup

[Service]
Type=oneshot
ExecStart=/bin/bash -c 'source /root/.restic-env && restic backup /etc /home /root /srv /var/www /var/backups/db --exclude-caches && restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune'
# /etc/systemd/system/restic-backup.timer
[Unit]
Description=Daily restic backup

[Timer]
OnCalendar=*-*-* 03:30:00
Persistent=true

[Install]
WantedBy=timers.target
systemctl daemon-reload
systemctl enable --now restic-backup.timer
systemctl list-timers restic-backup.timer

forget --prune সাতটা দৈনিক, চারটা সাপ্তাহিক আর ছয়টা মাসিক স্ন্যাপশট রাখে আর বাকিগুলো মোছে। ডেটাবেস ডাম্পের ধাপ থাকলে সেটা একটা ExecStartPre= লাইনে রাখুন।

৭. সত্যিই কিছু রিস্টোর করুন

এই ধাপটাই "আমাদের ব্যাকআপ আছে"-কে সত্যে পরিণত করে। একটা ফোল্ডার অস্থায়ী ডিরেক্টরিতে ফিরিয়ে এনে দেখুন:

source /root/.restic-env
restic restore latest --target /tmp/restore-test --include /etc/nginx
ls -la /tmp/restore-test/etc/nginx
restic check

একবার এখনই করুন, তারপর কয়েক মাস পরপর। restic check রিপোজিটরির গঠন যাচাই করে; রিস্টোর প্রমাণ করে ডেটা সত্যিই আছে।

restic আর Managed Backups

এরা প্রতিদ্বন্দ্বী নয়। Managed Backups প্রতিদিন পুরো সার্ভারের একটা রিস্টোর পয়েন্ট নেয়, যা আপনি ড্যাশবোর্ড থেকে ফিরিয়ে আনেন — ভুল হওয়া আপডেটের পর দ্রুত সমাধান। এর দাম মাসে $2, আর যেকোনো বার্ষিক প্ল্যানে বিনামূল্যে থাকে। restic ফাইল স্তরে, সার্ভারের বাইরে, আপনার নিয়ন্ত্রণের স্টোরেজে কপি দেয় — এটা তখন গুরুত্বপূর্ণ যখন সমস্যা হলো গত মঙ্গলবার মোছা কোনো ফাইল, বা যখন আমাদের অবকাঠামোর পুরোপুরি বাইরে একটা কপি চান।

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

FAQ

restic-এর পাসওয়ার্ড হারালে কী হবে?

ব্যাকআপ চিরতরে হারিয়ে যাবে। restic সবকিছু ক্লায়েন্টের দিকে এনক্রিপ্ট করে আর কোনো রিকভারি কী নেই। পাসওয়ার্ডটা পাসওয়ার্ড ম্যানেজারে রাখুন, শুধু যে সার্ভারের ব্যাকআপ নিচ্ছেন সেখানে নয়।

রিপোজিটরি কোথায় থাকা উচিত?

সার্ভার ছাড়া যেকোনো জায়গায়: S3-সামঞ্জস্যপূর্ণ অবজেক্ট স্টোরেজ, SFTP দিয়ে অন্য একটা VPS বা বাড়ির কোনো মেশিন। একই ডিস্কে রাখা ব্যাকআপ ওই ডিস্কের সাথেই শেষ হয়।

restic দিয়ে ডেটাবেসের ব্যাকআপ কীভাবে নেব?

আগে ডাম্প নিন আর সেই ডাম্পের ব্যাকআপ নিন — PostgreSQL-এর জন্য 'pg_dump -Fc', MySQL-এর জন্য 'mysqldump --single-transaction'। চালু ডেটাবেসের ফাইল কপি করলে এমন ব্যাকআপ পেতে পারেন যা চালুই হবে না।

ব্যাকআপ কত জায়গা নেয়?

আপনি যা ভাবছেন তার চেয়ে কম। restic ফাইলকে টুকরো করে আর প্রতিটি টুকরো একবার রাখে, তাই কম বদলানো সার্ভারের দৈনিক স্ন্যাপশট শুধু বদলানো ডেটা যোগ করে।

আমার কি এখনও Managed Backups লাগবে?

এরা আলাদা সমস্যা সমাধান করে। Managed Backups পুরো সার্ভারের দৈনিক রিস্টোর পয়েন্ট দেয়, যা আপনি ড্যাশবোর্ড থেকে ফিরিয়ে আনেন। restic ফাইল স্তরে, সার্ভারের বাইরে আর আপনার নিয়ন্ত্রণে কপি দেয়। অনেকে দুটোই ব্যবহার করেন।

মন্তব্য

এখনো কোনো মন্তব্য নেই। প্রথম হোন।

একটি মন্তব্য দিন

মন্তব্য প্রকাশের আগে মডারেট করা হয়।