VPS

⌘K
  1. Home
  2. VPS
  3. Ubuntu
  4. vps ডাটাবেস ব্যাকআপ গুগল ...
  5. ৩০ দিনের পুরানো ফাইল মুছে ফেলা

৩০ দিনের পুরানো ফাইল মুছে ফেলা

আপনি চাচ্ছেন যে ৩০ দিনের পুরানো ব্যাকআপ ফাইলগুলো (লোকাল এবং Google Drive উভয় থেকে) স্বয়ংক্রিয়ভাবে মুছে ফেলা হোক। আমরা পূর্বের ব্যাকআপ স্ক্রিপ্টটি আপডেট করবো যাতে এটি ৩০ দিনের পুরানো ফোল্ডার এবং ফাইল মুছে ফেলে। নিচে ধাপে ধাপে বিস্তারিত গাইড এবং আপডেটেড স্ক্রিপ্ট দেওয়া হলো।

এই আপডেটে আমরা:

  • লোকাল ডিরেক্টরি (/backup/files/UniworldHrmBackup/) থেকে ৩০ দিনের পুরানো ফোল্ডার মুছে ফেলবো।
  • Google Drive-এ UniworldHrm-GoogleDrive:UniworldHrmBackup/ থেকে ৩০ দিনের পুরানো ফোল্ডার মুছে ফেলবো।
  • লগ ফাইলে মুছে ফেলার প্রক্রিয়ার তথ্য রেকর্ড করবো।
  • পূর্বের স্ক্রিপ্টের artifact_id ব্যবহার করবো কারণ এটি পূর্বের স্ক্রিপ্টের আপডেট।

📦 SQLite ব্যাকআপ স্ক্রিপ্ট আপডেট (৩০ দিনের পুরানো ফাইল মুছে ফেলা)

✅ ধাপ ১: ব্যাকআপ স্ক্রিপ্ট আপডেট করা

আমরা পূর্বের স্ক্রিপ্টটি এডিট করবো এবং ৩০ দিনের পুরানো ব্যাকআপ মুছে ফেলার লজিক যোগ করবো।

sudo nano /usr/local/backup-scripts/backup_UniworldHrm_sqlite.sh

নিচের আপডেটেড কোডটি পেস্ট করুন:

#!/bin/bash

# আজকের তারিখ
TODAY=$(date +"%Y-%m-%d")

# সোর্স এবং ডেস্টিনেশন পাথ
SOURCE="/root/UniworldHrm/UniworldHrm/db.sqlite3"
DESTINATION="/backup/files/UniworldHrmBackup/$TODAY"
LOG_FILE="/var/log/UniworldHrmBackup.log"

# ডিরেক্টরি তৈরি
mkdir -p "$DESTINATION"

# লগ ফাইলে শুরুর সময় লেখা
echo "$(date): Starting backup for $SOURCE" >> "$LOG_FILE"

# ব্যাকআপ কপি
cp "$SOURCE" "$DESTINATION/db.sqlite3"

if [ $? -eq 0 ]; then
    echo "$(date): Backup successful: $DESTINATION/db.sqlite3" >> "$LOG_FILE"

    # Google Drive-এ আপলোড
    rclone copy "$DESTINATION/db.sqlite3" UniworldHrm-GoogleDrive:UniworldHrmBackup/$TODAY --progress >> "$LOG_FILE" 2>&1

    if [ $? -eq 0 ]; then
        echo "$(date): Upload to Google Drive (UniworldHrm-GoogleDrive) successful." >> "$LOG_FILE"
    else
        echo "$(date): Upload to Google Drive (UniworldHrm-GoogleDrive) failed!" >> "$LOG_FILE"
    fi
else
    echo "$(date): Backup failed for $SOURCE!" >> "$LOG_FILE"
fi

# ৩০ দিনের পুরানো লোকাল ব্যাকআপ মুছে ফেলা
find /backup/files/UniworldHrmBackup/ -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \; >> "$LOG_FILE" 2>&1
if [ $? -eq 0 ]; then
    echo "$(date): Successfully deleted local backups older than 30 days." >> "$LOG_FILE"
else
    echo "$(date): Failed to delete local backups older than 30 days!" >> "$LOG_FILE"
fi

# ৩০ দিনের পুরানো Google Drive ব্যাকআপ মুছে ফেলা
rclone delete UniworldHrm-GoogleDrive:UniworldHrmBackup --min-age 30d >> "$LOG_FILE" 2>&1
if [ $? -eq 0 ]; then
    echo "$(date): Successfully deleted Google Drive backups older than 30 days." >> "$LOG_FILE"
else
    echo "$(date): Failed to delete Google Drive backups older than 30 days!" >> "$LOG_FILE"
fi

# লগ ফাইলের সাইজ ম্যানেজ করা (১০০০ লাইনের বেশি হলে পুরানো লাইন মুছে ফেলা)
if [ $(wc -l < "$LOG_FILE") -gt 1000 ]; then
    tail -n 1000 "$LOG_FILE" > "$LOG_FILE.tmp" && mv "$LOG_FILE.tmp" "$LOG_FILE"
    echo "$(date): Log file trimmed to last 1000 lines." >> "$LOG_FILE"
fi

সেভ করুন:

  • Ctrl + O, এন্টার, তারপর Ctrl + X

ব্যাখ্যা:

  • লোকাল ব্যাকআপ মুছে ফেলা: find /backup/files/UniworldHrmBackup/ -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \; কমান্ডটি ৩০ দিনের পুরানো ফোল্ডার মুছে ফেলে।
  • Google Drive ব্যাকআপ মুছে ফেলা: rclone delete UniworldHrm-GoogleDrive:UniworldHrmBackup --min-age 30d কমান্ডটি Google Drive-এ ৩০ দিনের পুরানো ফোল্ডার/ফাইল মুছে ফেলে।
  • লগিং: প্রতিটি মুছে ফেলার প্রক্রিয়ার সফলতা/ব্যর্থতা লগ ফাইলে রেকর্ড করা হচ্ছে।
  • লগ ফাইল ম্যানেজমেন্ট: পূর্বের মতো ১০০০ লাইনের বেশি হলে পুরানো লাইন মুছে ফেলা হচ্ছে।

✅ ধাপ ২: স্ক্রিপ্ট এক্সিকিউটেবল নিশ্চিত করা

স্ক্রিপ্টটি ইতিমধ্যে এক্সিকিউটেবল হওয়া উচিত। তবুও নিশ্চিত করতে:

sudo chmod +x /usr/local/backup-scripts/backup_UniworldHrm_sqlite.sh

✅ ধাপ ৩: স্ক্রিপ্ট টেস্ট করা

স্ক্রিপ্টটি ম্যানুয়ালি চালিয়ে দেখুন:

sudo /usr/local/backup-scripts/backup_UniworldHrm_sqlite.sh

যাচাই করুন:

  1. লোকাল ব্যাকআপ:
   ls -l /backup/files/UniworldHrmBackup/$(date +"%Y-%m-%d")/db.sqlite3

ফাইলটি সঠিকভাবে তৈরি হয়েছে কিনা দেখুন।

  1. Google Drive-এ আপলোড:
   rclone lsd UniworldHrm-GoogleDrive:UniworldHrmBackup/$(date +"%Y-%m-%d")

ফোল্ডারটি এবং db.sqlite3 ফাইলটি Google Drive-এ আছে কিনা যাচাই করুন।

  1. পুরানো ব্যাকআপ মুছে ফেলা:
  • লোকালে ৩০ দিনের পুরানো ফোল্ডার মুছে গেছে কিনা চেক করুন:
    bash find /backup/files/UniworldHrmBackup/ -maxdepth 1 -type d
  • Google Drive-এ ৩০ দিনের পুরানো ফোল্ডার মুছে গেছে কিনা চেক করুন:
    bash rclone lsd UniworldHrm-GoogleDrive:UniworldHrmBackup
  1. লগ ফাইল চেক:
   tail -f /var/log/UniworldHrmBackup.log

আউটপুটে নিচের মতো দেখতে পাবেন:

   Sat Aug  2 20:15:01 +06 2025: Starting backup for /root/UniworldHrm/UniworldHrm/db.sqlite3
   Sat Aug  2 20:15:01 +06 2025: Backup successful: /backup/files/UniworldHrmBackup/2025-08-02/db.sqlite3
   Sat Aug  2 20:15:02 +06 2025: Upload to Google Drive (UniworldHrm-GoogleDrive) successful.
   Sat Aug  2 20:15:02 +06 2025: Successfully deleted local backups older than 30 days.
   Sat Aug  2 20:15:03 +06 2025: Successfully deleted Google Drive backups older than 30 days.

সম্ভাব্য সমস্যা ও সমাধান:

  • যদি find কমান্ড ব্যর্থ হয়: নিশ্চিত করুন /backup/files/UniworldHrmBackup/ পাথে অনুমতি আছে (sudo chmod -R 755 /backup)।
  • যদি rclone delete ব্যর্থ হয়: rclone listremotes দিয়ে UniworldHrm-GoogleDrive: চেক করুন এবং টোকেন বৈধ কিনা নিশ্চিত করুন।

✅ ধাপ ৪: ক্রনজব নিশ্চিত করা

আপনার পূর্বের ক্রনজব ইতিমধ্যে সেট করা আছে। নিশ্চিত করতে:

crontab -l

আউটপুটে নিচের লাইনটি থাকা উচিত:

0 2 * * * /usr/local/backup-scripts/backup_UniworldHrm_sqlite.sh >> /var/log/UniworldHrmBackup.log 2>&1

যদি না থাকে, তাহলে যোগ করুন:

sudo crontab -e

এবং উপরের লাইনটি পেস্ট করুন।


✅ ধাপ ৫: লগ ফাইল চেক

ব্যাকআপ এবং মুছে ফেলার প্রক্রিয়ার স্থিতি চেক করতে:

tail -f /var/log/UniworldHrmBackup.log

উদাহরণ আউটপুট:

Sat Aug  2 20:15:01 +06 2025: Starting backup for /root/UniworldHrm/UniworldHrm/db.sqlite3
Sat Aug  2 20:15:01 +06 2025: Backup successful: /backup/files/UniworldHrmBackup/2025-08-02/db.sqlite3
Sat Aug  2 20:15:02 +06 2025: Upload to Google Drive (UniworldHrm-GoogleDrive) successful.
Sat Aug  2 20:15:02 +06 2025: Successfully deleted local backups older than 30 days.
Sat Aug  2 20:15:03 +06 2025: Successfully deleted Google Drive backups older than 30 days.

🎉 সমাপ্তি

অভিনন্দন! আপনি সফলভাবে:

  • SQLite ব্যাকআপ স্ক্রিপ্ট আপডেট করেছেন যাতে ৩০ দিনের পুরানো লোকাল এবং Google Drive ব্যাকআপ মুছে ফেলা হয়।
  • স্ক্রিপ্টে লগিং এবং ত্রুটি পরিচালনা উন্নত করেছেন।
  • ক্রনজবের মাধ্যমে প্রতিদিন রাত ২টায় অটোমেটিক ব্যাকআপ এবং পুরানো ফাইল মুছে ফেলা নিশ্চিত করেছেন।
  • লগ ফাইলের মাধ্যমে প্রক্রিয়া মনিটর করার ব্যবস্থা রেখেছেন।

পরবর্তী পদক্ষেপ:

  1. নিয়মিত মনিটরিং: tail -f /var/log/UniworldHrmBackup.log দিয়ে লগ চেক করুন।
  2. Google Drive যাচাই: নিশ্চিত করুন যে ৩০ দিনের পুরানো ফোল্ডারগুলো Google Drive থেকে মুছে গেছে।
  3. ব্যাকআপ ইন্টিগ্রিটি: মাঝে মাঝে Google Drive থেকে একটি ব্যাকআপ ফাইল ডাউনলোড করে SQLite ডাটাবেসের অখণ্ডতা যাচাই করুন। উদাহরণ:
   rclone copy UniworldHrm-GoogleDrive:UniworldHrmBackup/$(date +"%Y-%m-%d")/db.sqlite3 /tmp/test.sqlite3
   sqlite3 /tmp/test.sqlite3 "SELECT * FROM sqlite_master;"

সমস্যা হলে: লগ ফাইল চেক করুন এবং প্রয়োজনে আমাকে বিস্তারিত জানান। আমি দ্রুত সাহায্য করবো! 😊

আপনার ব্যাকআপ সিস্টেম এখন সম্পূর্ণ এবং রিটেনশন পলিসি সহ প্রস্তুত! 🎉

How can we help?