Skip to main content

Shell script to backup directories from Linux server to Windows 2000/NT Server.

#!/bin/bash

# Shell script to backup directories from Linux server to Windows 2000/NT Server.
# http://bash.cyberciti.biz/backup/backup-directories-from-linux-to-windows-server/
#
# Run it as follows
# Scriptname /home backup abc123 //server2000/backup
# Backup /home directory from Linux box  to NT/2000 box called
# 'server2000' in share called '/backup' with username
# 'backup' and password 'abc123'
# --------------------------------------------------------------------
# This is a free shell script under GNU GPL version 2.0 or above
# Copyright (C) 2005 nixCraft project
# Feedback/comment/suggestions : http://cyberciti.biz/fb/
# -------------------------------------------------------------------------
# This script is part of nixCraft shell script collection (NSSC)
# Visit http://bash.cyberciti.biz/ for more information.
# -------------------------------------------------------------------------

# backup what?
FROM=$1
# NT Connection Info #
# NT Username
NTUSER=$2
# NT Password
NTPASSWD=$3
# NT ShareName i.e //server/backup etc
NTSHARE="$4"

# BackUpDir Name
BACKDIR="$(hostname -s)"

# Local mount point
MNT="/mnt/smbbox"

# Get date and time
NOW=$(date +"%m-%d-%Y-%I_%M%P")
# backup file  name
BAKFILE="backup.$NOW.tar.gz"

if [ "$#" != "4" ]; then
  echo "Syntax:"
  echo "$(basename $0) {Linux-directory} {NTusername} {NTpassword} {//NTserver/share-name}"
  exit 1
fi
# make sure $from do exits
if [ ! -d $FROM ]; then
   echo "Backup source directory \"$FROM\" does NOT exist"
   exit 2
fi
#Create tar to backup first
tar -czf /tmp/$BAKFILE $FROM

#Mount the smb to /mnt
[ ! -d $MNT ] && mkdir -p $MNT || :

mount -t smbfs -o username=$NTUSER,password=$NTPASSWD $NTSHARE $MNT

[ ! -d $MNT/$BACKDIR ] && mkdir -p $MNT/$BACKDIR || :

# Copy new tar to ntbox
cp /tmp/$BAKFILE $MNT/$BACKDIR

# Send sync aka force to write data before issuing umount
sync

# issue umount
umount $MNT