در سیستمهای تلفنی تحت ویپ مانند ایزابل (Issabel)، الستیکس (Elastix) و فری پی بی اکس (FreePBX)، یکی از مشکلات رایج، افزایش تدریجی حجم دادههای ذخیرهشده به ویژه فایلهای ضبط مکالمات است. با گذشت زمان، این فایلها میتوانند به سرعت فضای هارد دیسک سرور را پر کنند، که منجر به توقف سرویسهای تلفنی و حتی خرابی سیستم میشود.
برای جلوگیری از این مشکل و بهینهسازی استفاده از فضای ذخیرهسازی، میتوانیم از اسکریپتهای خودکار برای حذف فایلهای ضبط مکالمات قدیمی استفاده کنیم. در این مقاله، نحوه تنظیم یک اسکریپت برای حذف خودکار فایلهای ضبط شده مکالمات مربوط به ۳۰ روز گذشته را توضیح خواهیم داد. این اسکریپت به طور خودکار هر شب اجرا میشود و فایلهای قدیمی را پاک میکند.
دستورالعمل اجرای اسکریپت حذف فایلهای قدیمی
- ایجاد اسکریپت حذف فایلهاابتدا متن زیر را در یک فایل متنی با نام
removeOldRecordings.sh
ذخیره کنید:#!/bin/bash
# Remove Recordings after 30 Days
# Change this path to reflect your recording storage location
RECORDINGS=/var/spool/asterisk/monitor/
# Change this number to reflect the maximum age of call recordings
RECORDINGEXPIRY=30
# Delete recordings older than $RECORDINGEXPIRY days
find $RECORDINGS -mtime +$RECORDINGEXPIRY -exec rm
{} \;
در این اسکریپت:
- مسیر ذخیرهسازی فایلهای ضبط شده مکالمات (
/var/spool/asterisk/monitor/
) باید با مسیر واقعی در سرور شما جایگزین شود. - متغیر
RECORDINGEXPIRY
برای تعیین مدت زمان نگهداری فایلهای ضبط شده است. در اینجا ۳۰ روز انتخاب شده است، اما میتوانید این عدد را به هر تعداد روز دلخواه تغییر دهید.
- مسیر ذخیرهسازی فایلهای ضبط شده مکالمات (
- انتقال اسکریپت به سرور و تنظیم مجوزهافایل
removeOldRecordings.sh
را به مسیر/usr/src/
منتقل کنید و به آن مجوز اجرای ۷۷۷ بدهید تا بتوانید آن را به راحتی اجرا کنید:mv removeOldRecordings.sh /usr/src/
chmod 777 /usr/src/removeOldRecordings.sh
- تنظیم Cron Job برای اجرای خودکار اسکریپتبرای اجرای مداوم این اسکریپت هر شب، باید یک Cron job تنظیم کنید. به این منظور، دستور زیر را در کنسول لینوکس وارد کنید:
crontab -e
سپس، دکمه
i
را فشار دهید تا وارد حالت ویرایش شوید. در یک خط جدید، متن زیر را وارد کنید:۱ ۰ * * * /usr/src/removeOldRecordings.sh
این دستور باعث میشود که اسکریپت هر شب ساعت ۱۲:۰۱ بامداد اجرا شود. پس از وارد کردن این خط، برای خروج از ویرایشگر
Esc
را فشار دهید و سپس:wq
را بزنید تا تغییرات ذخیره شود و از محیط ویرایشگر خارج شوید.
نکات حرفهای برای بهبود مدیریت فایلها
- حذف خودکار لاگها و فایلهای صندوق صوتیعلاوه بر حذف فایلهای ضبط مکالمات، میتوانید اسکریپت را طوری تنظیم کنید که فایلهای لاگ یا فایلهای صندوق صوتی را نیز حذف کند. برای این کار، کافی است مسیر ذخیرهسازی مربوط به این فایلها را در متغیر
RECORDINGS
جایگزین کنید.به عنوان مثال، برای حذف فایلهای لاگ، مسیر لاگها را مانند زیر وارد کنید:LOGS=/var/log/asterisk/
- آزمایش اسکریپت قبل از تنظیم Cronتوصیه میشود قبل از تنظیم Cron job، اسکریپت را به صورت دستی اجرا کنید تا از کارکرد صحیح آن مطمئن شوید. برای این کار، دستور زیر را وارد کنید:
bash
/usr/src/removeOldRecordings.sh
- استفاده از ذخیرهسازی ابری یا NASبرای جلوگیری از پر شدن سریع فضای ذخیرهسازی، میتوانید فایلهای ضبط مکالمات را به جای نگهداری در هارد دیسک سرور، به ذخیرهسازی ابری (مثل AWS S3) یا دستگاه NAS (Network Attached Storage) منتقل کنید. این کار به شما کمک میکند که به صورت متمرکز و با امنیت بیشتری فایلها را ذخیره کنید.
- پیکربندی محدودیتهای فضابرای جلوگیری از پر شدن غیرمنتظره فضای دیسک، میتوانید از ابزارهایی مانند
du
یاdf
برای نظارت بر استفاده از فضای دیسک استفاده کنید. به این ترتیب میتوانید به سرعت از پر شدن دیسک جلوگیری کرده و هشدارهای لازم را دریافت کنید.
با رعایت این نکات و استفاده از اسکریپتهای خودکار، میتوانید از پر شدن غیرضروری فضای دیسک جلوگیری کرده و سیستم تلفنی خود را به صورت کارآمدتری مدیریت کنید.
نتیجهگیری
این روش ساده و کارآمد میتواند به کاهش خطرات ناشی از پر شدن فضای دیسک در سیستمهای تلفنی ویپ کمک کند. با استفاده از اسکریپتها و ابزارهای Cron، مدیریت فایلهای ضبط شده بسیار ساده و خودکار خواهد شد.
ویپ ایران | VOIPIRAN، بزرگترین مرجع تخصصی ویپ و ارتباطات تلفنی فارسی زبان.
بسیار ممنون
اگر مستقیم بدون فایل فقط با این دستور
۰ ۰ * * * find /var/spool/asterisk/monitor/ -name “*.gsm” -mtime +90 -delete >/dev/null 2>&1
انجام بشه چه فرقی داره؟؟
امکان پذیر است، درواقع قراردادن در فایل و اجرای فایل در CronTab کمی نظم داده است و تغییر پارامتر ها راحت تر خواهد بود ولی در عمل تفاوتی ندارد.