Перенос директории данных на внешний носитель - gSpotx2f/ruantiblock_openwrt GitHub Wiki
После установки ruantiblock можно перенести директории с данными (/tmp/ruantiblock
и /tmp/dnsmasq.d
, которые содежржат создаваемые модулями файлы со списками блокировок для nftables и dnsmasq) на внешний носитель, т.е. на флешку или HDD подключенные к роутеру. При стандартной установке файлы со списками блокировок находятся в оперативной памяти, что может быть нежелательно если свободной памяти мало. Расположение данных на внешнем носителе позволяет сохранить список блокировок после перезагрузки роутера, а также отключить автоматическое обновление блэклиста каждый раз при старте системы.
Для переноса директорий, естественно, необходимо наличие подключенного и настроенного внешнего диска с файловой системой ext. Далее предполагается что диск смонтирован в /opt
.
Начиная с OpenWrt 24.10 у каждого экземпляра dnsmasq своя директории конфигов в /tmp
. Имя директории содержит имя экземпляра: /tmp/dnsmasq.имя_экземпляр.d
. Далее в командах будет использоваться первая найденная папка конфигов dnsmasq в директории /tmp
. В обычном случае в системе присутствует лишь один стандартный экземпляр dnsmasq и это будет его папка конфигов (в примере обозначена как /tmp/dnsmasq.d
, но может иметь название, например, /tmp/dnsmasq.cfg01411c.d
и т.п.).
1. Перенос директорий данных в /opt/var/ruantiblock
(на внешний диск):
export DNSMASQ_CONFDIR="/tmp/$(ls -1 /tmp | awk '/^dnsmasq/{print $0; exit}')"
mkdir -p /opt/var/ruantiblock /opt/var/dnsmasq.d
mv -f /tmp/ruantiblock/* /opt/var/ruantiblock
mv -f ${DNSMASQ_CONFDIR}/* /opt/var/dnsmasq.d
2. Монтирование папок с внешнего носителя:
mount --bind /opt/var/ruantiblock /tmp/ruantiblock
mount --bind /opt/var/dnsmasq.d $DNSMASQ_CONFDIR
3. Запись команд создания директории /tmp/ruantiblock
и монтирования в /etc/rc.local
, для выполнения при старте системы (перед строкой exit 0
!):
awk '{if($0 ~ "exit 0"){printf "mkdir -p /tmp/ruantiblock\nmount --bind /opt/var/ruantiblock /tmp/ruantiblock\nmount --bind /opt/var/dnsmasq.d " ENVIRON["DNSMASQ_CONFDIR"] "\nexit 0"}else{print $0}}' /etc/rc.local > /tmp/rc.local && mv /tmp/rc.local /etc/rc.local
так должен выглядеть результат в /etc/rc.local
:
mkdir -p /tmp/ruantiblock
mount --bind /opt/var/ruantiblock /tmp/ruantiblock
mount --bind /opt/var/dnsmasq.d /tmp/dnsmasq.d
4. Отключение автоматического обновления блэклиста при старте системы:
uci set ruantiblock.config.update_at_startup="0"
uci commit ruantiblock
Теперь директории /tmp/ruantiblock
и /tmp/dnsmasq.d
(в оперативной памяти) смонтированы в директории /opt/var/ruantiblock
и /opt/var/dnsmasq.d
(на внешнем носителе). Обновление блэклиста не будет выполняться при старте системы (только по расписанию cron), а файлы со списком блокировок будут сохраняться после перезагрузки роутера.