8
Перенос директории данных на внешний носитель
gSpot edited this page 2025-03-02 15:27:08 +03:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

После установки 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), а файлы со списком блокировок будут сохраняться после перезагрузки роутера.