Omdat ik /var/log/ ook in het RAM (tmpfs) heb gezet, zoek ik een manier om de inhoud te behouden bij een reboot. De basale gedachte is dat ik de inhoud van /var/log/ mbv tar naar mijn SSD wegschrijf bij een shutdown, de inhoud weer terugzet bij het booten.
Ik heb me zitten verdiepen in bootscripts en ben met een bestaand script in /etc/init.d/ en de informatie op een aantal websites (
1,
2) aan de slag gegaan. Zie hieronder het resultaat van mijn "log_maintainer" bootscript.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
| #!/bin/sh
### BEGIN INIT INFO
# Provides: log_maintainer
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: S
# Default-Stop: 0 1 6
# Short-Description: restore logfiles in tmpfs
### END INIT INFO
# on shutdown, before unmout tmpfs: /bin/tar zpcvf /root/var_log.tar.gz /var/log/* > /dev/null
# on boot, after mount tmpfs: /bin/tar zpxvf /root/var_log.tar.gz -C / > /dev/null
PATH=/sbin:/usr/sbin:/bin:/usr/bin
do_start() {
echo -n "Restoring logfiles (/var/log/) from disk to RAM (tmpfs)..."
/bin/tar zpxvf /root/var_log.tar.gz -C / > /dev/null
echo "done."
}
do_stop() {
echo -n "Writing logfiles (/var/log/) from RAM (tmpfs) to disk..."
/bin/tar zpcvf /root/var_log.tar.gz /var/log/* > /dev/nul
echo "done."
}
case "$1" in
start)
do_start
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
do_stop
;;
*)
echo "Usage: $0 start|stop" >&2
exit 3
;;
esac |
Vervolgens heb ik via
sysv-rc-conf de juiste symlink in /etc/rcS.d/ aangemaakt. Ik heb hier heel bewust voor runlevel "S" gekozen, omdat ik dit /var/log/ gevuld wil hebben voordat de applicaties worden gestart die hier gebruik van maken (rsyslog, apache2, squid3, postfix, courier, etc...), maar pas nadat alles in /etc/fstab (zie hieronder) is gemount.
code:
1
| tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0 |
Ik heb het getest met een reboot, maar er gebeurt helemaal niks. En ja het script is executable (-rwxr-xr-x root root).
Toen heb ik het nog geprobeerd in runlevel 2. Los van het feit dat mijn script dan te laat zou worden uitgevoerd (dat zie ik aan de volgorde in /etc/rc2.d/) gebeurt er ook helemaal niks.
Ik maak ongetwijfeld ergens een denkfout, of mijn script klopt niet, maar ik loop vast op dit punt. Iemand nog tips/ideeën?