Для очистки БД от старых данных по RADIUS-сессиям пользователей можно использовать следующий bash-скрипт:
#!/bin/bash keep_days=180 until=$((($(date -d `date '+%F'` '+%s')-86400*$keep_days)*1000)) sudo -u postgres pg_dump -d wnam2_db --data-only --column-inserts --table=session --format=plain --where="create_time < '$until'" > /tmp/session_$(date "+%H%M-%d%m%y").sql sudo -u postgres psql -d wnam2_db -c "DELETE FROM session WHERE create_time < '$until'" sudo -u postgres pg_dump -d wnam2_db --data-only --column-inserts --table=session_log --format=plain --where="create_time < '$until'" > /tmp/session_log_$(date "+%H%M-%d%m%y").sql sudo -u postgres psql -d wnam2_db -c "DELETE FROM session_log WHERE create_time < '$until'" sudo -u postgres pg_dump -d wnam2_db --data-only --column-inserts --table=session_log_record --format=plain --where="create_time < '$until'" > /tmp/session_log_record_$(date "+%H%M-%d%m%y").sql sudo -u postgres psql -d wnam2_db -c "DELETE FROM session_log_record WHERE create_time < '$until'" sudo -u postgres pg_dump -d wnam2_db --data-only --column-inserts --table=session_traffic --format=plain --where="create_time < '$until'" > /tmp/session_traffic_$(date "+%H%M-%d%m%y").sql sudo -u postgres psql -d wnam2_db -c "DELETE FROM session_traffic WHERE create_time < '$until'"
В параметре keep_days укажите требуемое количество дней от текущей даты для которого будут сохранены данные в БД. Данные старше будут сохранены на диск в виде .sql файлов для их возможного последующего использования, после чего они будут удалены из БД
Сохраните скрипт в любом удобном месте под именем, например, sessions_clean.sh
Далее сделайте его исполняемым и запустите
chmod +x sessions_clean.sh ./sessions_clean.sh
Файлы резервной копии удаляемых данных будут сохранены в папке /tmp/, убедитесь, что она содержит достаточно свободного дискового пространства для сохранения данных файлов.
Также для указания срока хранения данных о сессиях в БД служит параметр session_timeout_expired в меню Настройки → Параметры. Все данные старше указанного срока будут удалены без сохранения резервной копии.
Для очистки БД от старых сессий deviceadmin можно использовать такой скрипт:
#!/bin/bash keep_days=180 until=$((($(date -d `date '+%F'` '+%s')-86400*$keep_days)*1000)) sudo -u postgres pg_dump -d wnam2_db --data-only --column-inserts --table=device_admin_session --format=plain --where="create_time < '$until'" > /tmp/device_admin_session_$(date "+%H%M-%d%m%y").sql sudo -u postgres psql -d wnam2_db -c "DELETE FROM device_admin_session WHERE create_time < '$until'"