diff --git a/Makefile b/Makefile index bbd7958..13abcf4 100644 --- a/Makefile +++ b/Makefile @@ -23,11 +23,12 @@ server: keys scripts user ./aether-gen.bash ./aether.pub ./server-backup bash ./aether-gen.bash cp ./aether.pub /home/aether/.ssh/authorized_keys cp ./aether-gen.bash /root/bin/aether-gen.bash - mkdir /usr/local/etc/Aether + mkdir -p /usr/local/etc/Aether/backup-entries touch /usr/local/etc/Aether/nodeslist mkdir -p ${BACKUPDIR}; make checkperm @echo You have the files. Add aether-gen.bash and server-backup to root\'s crontab. + @echo Mark services to be backed up by adding a file from examples/ to /usr/local/etc/Aether/backup-entries @echo Track client nodes in /usr/local/etc/Aether/nodeslist user: aether make-user.bash diff --git a/aether-gen.bash b/aether-gen.bash index 1b74b54..129e613 100755 --- a/aether-gen.bash +++ b/aether-gen.bash @@ -2,12 +2,21 @@ export LOGFILE="/var/log/aether-gen.log" -/usr/local/src/Aether/server-backup +export BACKUPDIR="/usr/local/backup" +export BACKUPCMD="rsync -avzl --delete-after"; + +date >> "$LOGFILE" +chown root:root "$BACKUPDIR" +chmod 0770 "$BACKUPDIR" + +for i in `find /usr/local/etc/Aether/backup-entries/ -type f`; do + bash "${i}" &>> "$LOGFILE" +done + +date > "$BACKUPDIR"/lastbackup.date cd /home/aether -date >> $LOGFILE - echo Creating and compressing archive... tar cvf aether.tar /usr/local/backup gzip -f aether.tar @@ -18,5 +27,5 @@ rm aether.tar.gz echo Created aether archive. -date >> $LOGFILE -echo >> $LOGFILE +date >> "$LOGFILE" +echo >> "$LOGFILE" diff --git a/examples/cron.backup.script b/examples/cron.backup.script new file mode 100644 index 0000000..df5cbfe --- /dev/null +++ b/examples/cron.backup.script @@ -0,0 +1,4 @@ +#!/bin/bash +### Cron ### +crontab -l > "$BACKUPDIR"/$(whoami)-crontab + diff --git a/examples/foundation.backup.script b/examples/foundation.backup.script new file mode 100644 index 0000000..9e278a7 --- /dev/null +++ b/examples/foundation.backup.script @@ -0,0 +1,6 @@ +#!/bin/bash +### Foundation ### +$BACKUPCMD /srv/foundation/ "$BACKUPDIR"/Foundation &>/dev/null +$BACKUPCMD /usr/local/etc/ "$BACKUPDIR"/usr-local-etc + + diff --git a/examples/grimoire.backup.script b/examples/grimoire.backup.script new file mode 100644 index 0000000..a028ce1 --- /dev/null +++ b/examples/grimoire.backup.script @@ -0,0 +1,4 @@ +#!/bin/bash +### Grimoire ### +sudo -u postgres pg_dumpall > "$BACKUPDIR"/grimoire.sql + diff --git a/examples/irc.backup.script b/examples/irc.backup.script new file mode 100644 index 0000000..1252947 --- /dev/null +++ b/examples/irc.backup.script @@ -0,0 +1,7 @@ +#!/bin/bash +### IRC Server ### +$BACKUPCMD /etc/unrealircd/ "$BACKUPDIR"/unrealircd +$BACKUPCMD /etc/anope/ "$BACKUPDIR"/anope +cp /opt/anope/data/anope.db "$BACKUPDIR" + + diff --git a/examples/singularity.backup.script b/examples/singularity.backup.script new file mode 100644 index 0000000..f009e2c --- /dev/null +++ b/examples/singularity.backup.script @@ -0,0 +1,5 @@ +#!/bin/bash +### Singularity ### +cp /usr/share/webapps/tt-rss/config.php "$BACKUPDIR"/singularity-config.php +sudo -u postgres pg_dump ttrss > "$BACKUPDIR"/ttrss.psql + diff --git a/examples/sshd.backup.script b/examples/sshd.backup.script new file mode 100644 index 0000000..36ef389 --- /dev/null +++ b/examples/sshd.backup.script @@ -0,0 +1,4 @@ +#!/bin/bash +### SSHD ### +mkdir -p "$BACKUPDIR"/ssh +$BACKUPCMD /etc/ssh "$BACKUPDIR"/ssh diff --git a/examples/webserver.backup.script b/examples/webserver.backup.script new file mode 100644 index 0000000..3e0db4f --- /dev/null +++ b/examples/webserver.backup.script @@ -0,0 +1,5 @@ +#!/bin/bash +### Lighttpd ### +mkdir -p "$BACKUPDIR"/lighttpd "$BACKUPDIR"/http +$BACKUPCMD /etc/lighttpd/ "$BACKUPDIR"/lighttpd +$BACKUPCMD /srv/http/ "$BACKUPDIR"/http/ diff --git a/examples/wiki.backup.script b/examples/wiki.backup.script new file mode 100644 index 0000000..1a5a7dd --- /dev/null +++ b/examples/wiki.backup.script @@ -0,0 +1,9 @@ +#!/bin/bash +### Wiki ### +mkdir "$BACKUPDIR"/wiki/ +for i in `find /usr/share/webapps/ -maxdepth 1 -type d | grep mediawiki`; do + foldername="$(echo "$i" | rev | cut -f 1 -d '/' | rev)" + dbname="$(grep '^\$wgDBname' "$i"/LocalSettings.php | cut -f 2 -d \")" + $BACKUPCMD "${i}"/LocalSettings.php "$BACKUPDIR"/wiki/"$foldername"-localsettings.php + sudo -u postgres pg_dump "$dbname" > "$BACKUPDIR"/wiki/"$dbname".psql +done diff --git a/examples/yggdrasil.backup.script b/examples/yggdrasil.backup.script new file mode 100644 index 0000000..0810232 --- /dev/null +++ b/examples/yggdrasil.backup.script @@ -0,0 +1,9 @@ +#!/bin/bash +### Yggdrasil -- File list only for space reasons ### +if [ -x /usr/bin/locate ]; then + locate /srv/yggdrasil > "$BACKUPDIR"/yggdrasil-file-list.txt +else + find /srv/yggdrasil/ > "$BACKUPDIR"/yggdrasil_file_list.txt +fi + + diff --git a/server-backup b/server-backup deleted file mode 100755 index 68a1c2f..0000000 --- a/server-backup +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/bash - -export BACKUPDIR="/usr/local/backup" -export BACKUPCMD="rsync -avzl --delete-after"; - -## Backup small development ## -chown postgres:root "$BACKUPDIR" -chmod 0770 "$BACKUPDIR" - -$BACKUPCMD /root/bin/ "$BACKUPDIR"/root/bin/ - -## Backup configuration ## -cp -r /etc/skel "$BACKUPDIR" -cp /etc/bash.bashrc "$BACKUPDIR"/bash.bashrc -cp /etc/vimrc "$BACKUPDIR"/vimrc - -## Backup the good servers ## - -### SSHD ### -$BACKUPCMD /etc/ssh "$BACKUPDIR"/ssh - -### Lighttpd ### -$BACKUPCMD /etc/lighttpd/ "$BACKUPDIR"/lighttpd -$BACKUPCMD /srv/http/ "$BACKUPDIR"/http/ - -### Cron ### -crontab -l > "$BACKUPDIR"/$(whoami)-crontab - -### IRC Server ### -$BACKUPCMD /etc/unrealircd/ "$BACKUPDIR"/unrealircd -$BACKUPCMD /etc/anope/ "$BACKUPDIR"/anope -cp /opt/anope/data/anope.db "$BACKUPDIR" - -### Foundation ### -$BACKUPCMD /srv/foundation/ "$BACKUPDIR"/Foundation -$BACKUPCMD /usr/local/etc/ "$BACKUPDIR"/usr-local-etc - -### Wiki ### -$BACKUPCMD /usr/share/webapps/mediawiki/LocalSettings.php "$BACKUPDIR"/mediawiki-localsettings.php -# Databases backed up by Grimoire - -### Singularity ### -cp /usr/share/webapps/tt-rss/config.php "$BACKUPDIR"/singularity-config.php -# Databases backed up by Grimoire - -### Grimoire ### -sudo -u postgres pg_dump aninix_wiki > "$BACKUPDIR"/aninix_wiki.psql -sudo -u postgres pg_dump gb_wiki > "$BACKUPDIR"/gb_wiki.psql -sudo -u postgres pg_dump ttrss > "$BACKUPDIR"/ttrss.psql -sudo -u postgres pg_dump lykos_wiki > "$BACKUPDIR"/lykos_wiki.psql - -### Yggdrasil -- File list only for space reasons ### -if [ -x /usr/bin/locate ]; then - locate /srv/yggdrasil > "$BACKUPDIR"/yggdrasil-file-list.txt -else - find /srv/yggdrasil/ > "$BACKUPDIR"/yggdrasil_file_list.txt -fi - -# TODO evaluate for other services not covered. - -date > /var/log/server-backup.log -date > "$BACKUPDIR"/lastbackup.date