Linux : custom shell framework and scripts for my servers

Bash shell script snippet

As a lazy sysadmin, I try to make my servers as autonomous as possible : auto-backup, auto-sync tmpfs, report disk status by email, etc.

For all of that, I use a custom little shell framework and some scripts that I share with all my servers through my own git repository.

I decided to publish theses files : it might be useful for some one ;).  The “framework” and configuration variables are in bluemind_shellFramework.zip whereas scripts are in bluemind_shellScripts.zip.

What the framework provides

Description

Basicaly, the framework has the following features :

  • Redirect all output to a formated log file (eg: prefix added to every line)
  • Log file send to admin
  • Error manager (auto umounts, send mail, etc.)
  • Provides base functionalities such as directory sync, log writing, mysql backup, directory backup, changes detection in directory, etc.

Output example

The framework allows me to write small scripts that output log file like the following (for instance, a backup script):

[17.04.2013-03:00:03][filesrv] ##############################
[17.04.2013-03:00:03][filesrv] Home mirroring for filesrv
[17.04.2013-03:00:03][filesrv] ##############################
[17.04.2013-03:00:03][filesrv]
[17.04.2013-03:00:03][filesrv] Mount mirror partition
[17.04.2013-03:00:03][filesrv] Start Syncronization...
[17.04.2013-03:00:03][filesrv]
[17.04.2013-03:00:03][filesrv] building file list ... done
[17.04.2013-03:00:03][filesrv] home/hidden/path/to/some/changed/file
[17.04.2013-03:00:03][filesrv] home/hidden/path/to/some/changed/file/again
[17.04.2013-03:00:03][filesrv]
[17.04.2013-03:00:03][filesrv] sent 2399992 bytes  received 34 bytes  62338.34 bytes/sec
[17.04.2013-03:00:03][filesrv] total size is 925955506298  speedup is 385810.61
[17.04.2013-03:00:48][filesrv]
[17.04.2013-03:00:48][filesrv] Unount mirror partition
[17.04.2013-03:00:49][filesrv]
[17.04.2013-03:00:49][filesrv] ##############################
[17.04.2013-03:00:49][filesrv]

Example scripts

To give some ideas of the framework usage, bellow is 2 examples of scripts I use (together with cron).

Sync logs and backup files from tmps mountpoint to a static storage, plain, simple:

#/bin/bash
. /etc/bluemind/functions
synclog
syncbak
cleanTmp

Another one to backup whole file system and mysql databases with automatic detection of dedicated mount points for /boot and/or /var :

#!/bin/bash

. /etc/bluemind/functions

headerMessage "Starting backup of $HOSTNAME"

apt-get clean

# set BACKUP_DIR to local if needed
if ! [ -d $BACKUP_DIR ] ; then
  message "no remote backup dir found : using local backup dir"
  BACKUP_DIR="$BACKUP_LOCAL_DIR"
else
  message "mounting storage disk"
  mountBackupDir
fi

message "Starting backup of /"
backup "/" $BACKUP_DIR "$BACKUP_FILENAME.ROOT"

# make a separate backup if /boot is a partition
if [ "`grep /boot /etc/fstab`" ] ; then
  message "Starting backup of /boot";
  mountBoot
  backup "/boot" $BACKUP_DIR "$BACKUP_FILENAME.BOOT"
fi

# make a separate backup if /var is a partition
if [ "`grep /var /etc/fstab | grep ext4`" ] ; then
  message "Starting backup of /var";
  backup "/var" $BACKUP_DIR "$BACKUP_FILENAME.VAR"
fi

# mysql database backup
if [ -x mysqld ] ; then
  message "MySQL detected !"
  backupMysql $BACKUP_DIR "$BACKUP_FILENAME.sql"
fi

message "Unount storage and snapshot"
umountDirs

footerMessage
exitOK "backup"

Questions or comments?

Join the discussion on Discord, ask a question or share your experience.

Discuss on Discord
  1. a81b8cac-b6c5-4d6b-b0fd-c47bb4749d68-wmGitOps driven Openhab in k3s
  2. ChatGPT Image Jan 30, 2026, 07_13_27 PMXMG Pro 16 m25 under Linux: Maximum GPU Power and Gaming Performance
  3. 20250128_224935Cloud at home with minimum toil - PXE / Proxmox / Saltstack / k3s