Книга: ELASTIX – общайтесь свободно
Назад: Меры повышения безопасности
Дальше: Отключение зависших соединений

Высвобождение места на диске

Чтобы избежать аварийной остановки Elastix, поддерживайте необходимый системе объем свободной памяти на диске. Чаще всего при переполнении диска страдает файл AMPUSER, в котором хранится текущая информация обо всех абонентах, каналах и переадресациях. Повреждение этого файла приведет к прекращению работы телефонной станции или к ошибкам в работе, и доставит Вам множество неудобств по восстановлению файла. Обратите внимание на следующие задачи:
• удаление старых аудиозаписей разговоров
• удаление старых резервных копий настроек Elastix
• удаление старых файлов с факсами
• удаление старых файлов голосовой почты
• удаление старых записей из логов звонков (CDR)
Для первых трех задач можно использовать Addon Space Cleaner (, цена $9.90). После установки появляется в меню «System/Space Cleaner»:

 

 

Бесплатная версия позволяет автоматически удалять старые факсы и старые резервные копии настроек Elastix.

Настройка автоматического удаления старых аудиозаписей

Если ведете аудиозапись разговоров, но решили использовать бесплатную версию Space Cleaner, можете для поддержания свободного места настроить небольшой скрипт для удаления старых аудиозаписей.
Создайте файл /root/tasks/cleanup-asterisk.sh и откройте его в текстовом редакторе:
mkdir /root/tasks
nano /root/tasks/cleanup-asterisk.sh
Напишите следующий текст скрипта и сохраните:
#!/bin/bash
flog=/var/log/asterisk/cleanup-asterisk-log.txt
dtFormat="+%Y-%m-%d %H:%M:%S"
log() {
echo $(date "${dtFormat}")" $1" >>$flog
}
removeOld() {
folder=$1
days=$2
patt=$3
lst=/tmp/cleanup-list.txt
find – P "${folder}" – maxdepth 4 – mtime +${days} – iname "${patt}" – delete – print >${lst}
cnt=$(grep – c "" ${lst})
log "OK: ${cnt} files like '${patt}' removed from '${folder}'"
}

 

log «Cleanup Asterisk files started»
removeOld '/var/spool/asterisk/monitor' "120" '*.wav'
removeOld '/var/www/backup' "60" 'elastixbackup-*-ab.tar'
removeOld '/var/www/faxes' "120" '*.pdf'
removeOld '/var/www/faxes' "120" '*.tif'
removeOld '/var/www/hylafax' "120" '*.pdf'
removeOld '/var/www/hylafax' "120" '*.tif'
log "Cleanup complete"
exit 0
Настройте автоматический запуск, используя команду
crontab – e
убедитесь, что есть определение переменной окружения PATH
PATH=$PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
чтобы запускать скрипт каждую ночь в 01:05 добавьте строку:
5 1 * * * /bin/bash /root/tasks/cleanup-asterisk.sh
Подсказка: для перехода в режим редактирования используйте «i». Для сохранения изменений нажмите «ESC», затем «:wq».

 

Данный скрипт удаляет:
• аудиозаписи старее 120 дней
• резервные копии конфигурации Elastix старее 60 дней (кроме созданных вручную)
• факсы старее 120 дней
При необходимости по аналогии можно добавить другие папки для удаления старых файлов.

Отключение резервного копирования аудиозаписей

Если Вы включили резервное копирование конфигурации Elastix на закладке «System/Backup/Restore»

 

 

по умолчанию создаются резервные копии даже голосовой почты и аудиозаписей разговоров:

 

 

Это очень быстро засоряет диск и при переполнении может привести к остановке работы Elastix. Поэтому рекомендую отключить архивирование аудиозаписей, откорректировав скрипт:
nano /var/www/backup/automatic_backup.php
перечислив компоненты для регулярного резервного копирования и дополнив строку запуска процедуры создания резервной копии строкой «' '.$components»:
$components=' – components=as_db,as_config_files,as_voicemail,as_sounds,'
.'as_mohmp3,as_dahdi,fx_db,fx_pdf,em_db,em_mailbox,ep_db,'
.'ep_config_files,sugar_db,vtiger_db,a2billing_db,mysql_db,'
.'menus_permissions,fop_config,calendar_db,address_db,conference_db,eop_db';

 

system('/usr/share/elastix/privileged/backupengine – backup – backupfile '.
$sBackupFilename.' – tmpdir '.$sBackupDir.' '.$components, $retval);
Альтернативный способ – отключить вообще возможность резервного копирования аудиозаписей, в том числе по требованию. Для этого создайте и выполните следующий скрипт:
#!/bin/bash
fl=/var/www/html/modules/backup_restore/index.php
cp $fl ${fl}-orig
txt_old='["]as_monitor["]'
txt_new='\/\/ \"as_monitor\"'
sed "s/$txt_old/$txt_new/g" – i $fl
Назад: Меры повышения безопасности
Дальше: Отключение зависших соединений