This is an old revision of the document!


Linux Maintenance Scripts
Mail Spool Maintenance

Remove mail files of certain size (mailboxes that have spam and are not checked by users)

#!/bin/bash
 
x=''
 
for x in $( ls /var/spool/mail ); do
  if [ $( stat -c %s /var/spool/mail/$x ) -gt 10000000 ]; then
    echo $x >> names.log
    # rm $x
  fi
done
Commonly Used ''sed'' Commands

Deleting Tabs with ''sed''

To delete the rest of a line after the tab in command du (disk used), try one of the following commands:

Delete characters from the begining of line until the tab:

$ du | sed "s/^.*\t//"

Delete tabe from the end of the line:

$ du | sed "s/\t.*$//"
Notation
^ for beginning.
$ for end.
. for one character.
* for 0 or more repetitions.
\t for tab.
Backup Critical Data and Configuration

Create a daily cron task to backup some important files to a directory (for example: /data/backup). This script should be created as /etc/cron.daily/backup.sh:

#!/bin/bash
## script: /etc/cron.daily/backup.sh
##
 
#-----------------------------
# Define Target Directory
#-----------------------------
TARGETDIR="/data/backup/$HOSTNAME"
 
# Try to create TargetDir if it does not exist
if ! cd $TARGETDIR; then
  mkdir $TARGETDIR
fi
 
# Perform operations if TargetDir exists
if cd $TARGETDIR; then
 
  #-----------------------------
  # Remove old backup file
  #-----------------------------
  rm -rf $TARGETDIR/*
 
  #-----------------------------
  ## Backup 
  #-----------------------------
  # Backup mail spool
  tar -czvf $TARGETDIR/mailbackup.tar.gz /var/spool/mail
 
  # Backup user directories
  tar -czvf $TARGETDIR/homesbackup.tar.gz /home
 
  # Backup system settings, ie. /etc directory
  tar -czvf $TARGETDIR/etc-dir.tar.gz /etc
 
  # Backup MYSQL databases
  tar -czvf $TARGETDIR/mysql-data-backup.tar.gz /var/lib/mysql
 
 # Backup SAMBA config files (when using tdbsam)
  tar -czvf $TARGETDIR/samba-data-backup.tar.gz /var/lib/samba
 
  # Backup website
  tar -czvf $TARGETDIR/websitebackup.tar.gz /var/www
 
  #-----------------------------
  # Send Reminder
  #-----------------------------
  ## send reminder to sysadmin to pull the tarball from the server.
  mail root@localhost -s "Get the backup tarball off the server"
 
else
 
  ## send message to sysadmin.
  mail root@localhost -s "Backup failed. %TARGETDIR does not exist"  
 
fi

Including Subversion repositories:

#!/bin/bash
 
#-----------------------------
# Define Repository Directory
#-----------------------------
REPOSDIR="/data/repos/myproj"
TARGETDIR="/data/backup"
 
 
#---------------------------------------------------------
# Remove old Subversion dump file
#---------------------------------------------------------
rm -f $TARGETDIR/repo-myproj.svn_dump
 
#---------------------------------------------------------
# Step 1: Backup your old Repository
#---------------------------------------------------------
#
# The first thing you need when moving from one server to another
# is a dump of your subversion repository. Hopefully you are already
# creating dump's with a backup script, but if not here's how you can
# create a subversion dump file:
 
svnadmin dump $REPOSDIR > $TARGETDIR/repo-myproj.svn_dump
 
# The dump file contains all the revisions you have ever made
# to your svn repository, so it will probably be quite large
# (it even includes files you may have deleted in a previous revision).
#
#---------------------------------------------------------
# Step 2: Create the new Repository
#---------------------------------------------------------
#
# Now, simply transfer the dump file on to your new subversion server,
# and create an empty repository:
#
# svnadmin create /path/to/repository
# svnadmin create $REPOSDIR
#
#---------------------------------------------------------
# Step 3: Import your old repository into the new one
#---------------------------------------------------------
#
# Next import your dump file:
#
# svnadmin load /path/to/repository < repo_name.svn_dump
# svnadmin load $REPOSDIR < $TARGETDIR/repo-myproj.svn_dump
 
## send reminder to sysadmin to pull the tarball from the server.
#mail ttran -s "Get the backup tarball off the server"