আপনি চাচ্ছেন যে ৩০ দিনের পুরানো ব্যাকআপ ফাইলগুলো (লোকাল এবং 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যাচাই করুন:
- লোকাল ব্যাকআপ:
ls -l /backup/files/UniworldHrmBackup/$(date +"%Y-%m-%d")/db.sqlite3ফাইলটি সঠিকভাবে তৈরি হয়েছে কিনা দেখুন।
- Google Drive-এ আপলোড:
rclone lsd UniworldHrm-GoogleDrive:UniworldHrmBackup/$(date +"%Y-%m-%d")ফোল্ডারটি এবং db.sqlite3 ফাইলটি Google Drive-এ আছে কিনা যাচাই করুন।
- পুরানো ব্যাকআপ মুছে ফেলা:
- লোকালে ৩০ দিনের পুরানো ফোল্ডার মুছে গেছে কিনা চেক করুন:
bash find /backup/files/UniworldHrmBackup/ -maxdepth 1 -type d - Google Drive-এ ৩০ দিনের পুরানো ফোল্ডার মুছে গেছে কিনা চেক করুন:
bash rclone lsd UniworldHrm-GoogleDrive:UniworldHrmBackup
- লগ ফাইল চেক:
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 ব্যাকআপ মুছে ফেলা হয়।
- স্ক্রিপ্টে লগিং এবং ত্রুটি পরিচালনা উন্নত করেছেন।
- ক্রনজবের মাধ্যমে প্রতিদিন রাত ২টায় অটোমেটিক ব্যাকআপ এবং পুরানো ফাইল মুছে ফেলা নিশ্চিত করেছেন।
- লগ ফাইলের মাধ্যমে প্রক্রিয়া মনিটর করার ব্যবস্থা রেখেছেন।
পরবর্তী পদক্ষেপ:
- নিয়মিত মনিটরিং:
tail -f /var/log/UniworldHrmBackup.logদিয়ে লগ চেক করুন। - Google Drive যাচাই: নিশ্চিত করুন যে ৩০ দিনের পুরানো ফোল্ডারগুলো Google Drive থেকে মুছে গেছে।
- ব্যাকআপ ইন্টিগ্রিটি: মাঝে মাঝে 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;"সমস্যা হলে: লগ ফাইল চেক করুন এবং প্রয়োজনে আমাকে বিস্তারিত জানান। আমি দ্রুত সাহায্য করবো! 😊
আপনার ব্যাকআপ সিস্টেম এখন সম্পূর্ণ এবং রিটেনশন পলিসি সহ প্রস্তুত! 🎉