Correct way to use dump to backup a Samba share

Roland Smith rsmith at xs4all.nl
Sun Jul 8 08:04:34 UTC 2007


On Sat, Jul 07, 2007 at 06:42:20PM -0700, L Goodwin wrote:
> I have a Samba share on a software RAID 1 array (using
> gmirror) that I need to backup. I want to create a
> shell script that does a level 0 backup every time to
> (alternately) one of two USB drives. I plan to have
> only ONE USB drive connected at a time. 
> 
> I want the script to mount the drive, perform the
> backup, then unmount the drive so that it is ready for
> someone who knows zip about computers to safely remove
> and take offsite. 
> 
> Here are the steps I have for the script.
> Is this all I need to do? Do I need any error handling
> logic? THANKS!

> # Mount the backup drive:
> mount /dev/usb0
> 
> # Create the backup:
> /sbin/dump -0u -f /dev/usb0 /sambavol
> 
> # Unmount the backup drive:
> umount /dev/usb0

The following is a rough outline of what you should do;
-------------- shell-script --------------
#!/bin/sh
# The following assumes that the USB mass-storage device is formatted
# with a UFS filesystem

# Only root can perform dumps.
if [ $(id -u) -ne 0 ]; then
    echo "Only root can perform dumps. Exiting."
    exit 1
fi

DDIR=/mnt/root
# First, check if the target directory exists
if [ ! -d $DDIR ]; then
    echo "The $DDIR directory doesn't exist. Exiting."
    exit 1
fi
# Then check if it is already mounted
if mount|grep $DDDIR >/dev/null; then
   echo "The $DDIR directory is already in use. Exiting"
    exit 1
fi

# Check if the device to dump to exists;
DEV=/dev/da0
if [ ! -c $DEV ]; then
    echo "The $DEV device doesn't exist. Exiting."
    exit 1
fi
# Check if the device is already mounted
if mount|grep $DEV >/dev/null; then
   echo "The $DEV device is already mounted. Exiting"
   exit 1
fi

SRC=/sambavol
DFLAGS="-0 -u -f"
# Check if the filesystem that is to be dumped exists.
if [ ! -d $SRC ]; then
    echo "The $SRC directory doesn't exist. Exiting."
    exit 1
fi
# Now check if it is mounted
if mount -t ufs|grep $SRC; then
   DFLAGS="-L "$DFLAGS
fi

# Mount the USB device.
if ! mount $DEV $DDIR; then
   "Mounting the USB disk failed. Exiting"
   exit 1
fi

DATE=$(date "+%Y%m%d")
# Perfrom the dump, assuming that the filesystem is live.
dump $DFLAGS ${DDIR}/sambavol-0-${DATE}.dump $SRC

umount $DDIR
-------------- shell-script --------------

Of course, you have to remove old dumps once in a while, lest you run
out of disk space.

Depending on the contents of the samba share, it might be worthwhile to
compress the dump with gzip;

# Perfrom the dump, 
dump $DFLAGS - $SRC|gzip >${DDIR}/sambavol-0-${DATE}.gz

Roland
-- 
R.F.Smith                                   http://www.xs4all.nl/~rsmith/
[plain text _non-HTML_ PGP/GnuPG encrypted/signed email much appreciated]
pgp: 1A2B 477F 9970 BA3C 2914  B7CE 1277 EFB0 C321 A725 (KeyID: C321A725)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-questions/attachments/20070708/0a21c3a6/attachment.pgp


More information about the freebsd-questions mailing list