در سیستمهای تلفنی مانند Issabel، Elastix و FreePBX، یکی از مهمترین چالشها، پر شدن فضای دیسک بهمرور زمان است. دلیل اصلی این موضوع، ذخیره شدن فایلهای ضبط تماس (Call Recording)، پیامهای صوتی و لاگهاست.
اگر این فایلها بهموقع مدیریت و پاکسازی نشوند، میتواند باعث مشکلات زیر شود:
-
اختلال در عملکرد سیستم تلفنی
-
توقف کامل سرویسهای Asterisk
-
آسیب به فایلسیستم یا خرابی لینوکس
🛠 راهکار: اسکریپت حذف مکالمات قدیمی (مثلاً بیش از ۳۰ روز)
با استفاده از اسکریپت Bash زیر، میتوانید فایلهای ضبط تماس را که بیش از ۳۰ روز از عمرشان گذشته، بهصورت روزانه و خودکار حذف کنید.
ساخت فایل اسکریپت
-
یک فایل با نام
removeOldRecordings.sh
در مسیر/usr/src/
بسازید:
sudo nano /usr/src/removeOldRecordings.sh
-
محتویات زیر را در آن قرار دهید:
#!/bin/bash
# حذف فایلهای ضبط تماس قدیمیتر از X روز
# مسیر فایلهای ضبطشده تماسها
RECORDINGS=/var/spool/asterisk/monitor/
# مدت نگهداری فایلها (بر حسب روز)
RECORDINGEXPIRY=30
# حذف فایلهایی که قدیمیتر از مدت مشخص شده هستند
find "$RECORDINGS" -type f -mtime +$RECORDINGEXPIRY -exec rm -f {} \;
-
فایل را ذخیره کرده و مجوز اجرایی کامل بدهید:
sudo chmod 777 /usr/src/removeOldRecordings.sh
اجرای خودکار روزانه با Cron
برای اینکه اسکریپت هر روز اجرا شود (مثلاً ساعت ۱۲:۰۱ بامداد)، یک کرونجاب تنظیم کنید:
crontab -e
در فایل بازشده، کلید i
را بزنید و خط زیر را اضافه کنید:
۱ ۰ * * * /usr/src/removeOldRecordings.sh
برای ذخیره و خروج:
-
کلید
Esc
را بزنید -
سپس بنویسید:
:wq
و Enter
نکات قابل تنظیم
-
مسیر
RECORDINGS=
را میتوانید به پوشه موردنظر تغییر دهید؛ مثلاً برای حذف پیامهای صندوق صوتی یا لاگها. -
متغیر
RECORDINGEXPIRY=30
را میتوانید به هر عدد روز دلخواه (مثلاً ۱۵ یا ۶۰) تغییر دهید.
نکته امنیتی مهم
اگر امنیت برایتان اهمیت دارد، بهجای chmod 777
از مجوزهای محدودتر مثل chmod 755
و اجرای اسکریپت با یک کاربر خاص استفاده کنید.