All pastes #956990 Raw Edit

Mine

public text v1 · immutable
#956990 ·published 2008-03-25 18:36 UTC
rendered paste body
#/bin/bash
## mkperm.sh

## This script is intended to create a backup of Exchange tree when mounted in EXCHANGE_MIRROR.
##
## Configuration:

##
## This should contain the path to MBX folder.
EXCHANGE_MIRROR=/mnt/mailsync/DOMAIN/MBX

## And the user homes to be copied to
DOMAIN_HOMES=/home/DOMAIN

## Set Permissions.
MAILDIR_PERMISSIONS=700
MAILFILE_PERMISSIONS=600

######################################################################################################

for mailuser in `ls $EXCHANGE_MIRROR`
do
	SOURCE=$EXCHANGE_MIRROR/$mailuser
	MAILUSER=`echo $mailuser | tr '[A-Z]' '[a-z]'` 			# make mailuser lowercase for target
	DEST=$DOMAIN_HOMES/$MAILUSER/Maildir
	cd $SOURCE
	OIFS="$IFS"; IFS="" 						# Some voodoo to deal with insane trailing spaces in folders.
	find . -mindepth 2 -type d | while read subdir			# traverse Exchange folders
	do
		subdir=`echo "$subdir" | sed 's/^\.\///'`			# remove leading ./
		destsub=`echo ".$subdir" | sed 's/Inbox\///;s/\//\./'`
		destsub="$DEST/$destsub"

		mkdir "$destsub"					# Create Maildir structure
		mkdir "$destsub/new"					# It's OK if this fails since
		mkdir "$destsub/tmp"					# the dirs might exist already.
		mkdir "$destsub/cur"
		
		for i in "$SOURCE/$subdir/"*; do cp -u "$i" "$destsub/cur/"; done
	done
	mkdir "$DEST/cur"
	mkdir "$DEST/tmp"
	mkdir "$DEST/new"

	for i in "$SOURCE/Inbox/"*; do cp -u "$i" "$DEST/cur/"; done

	find . -maxdepth 1 -type d | while read subdir
	do
		subdir=`echo $subdir | sed "s/+/ /;s/.\///"`
		if [ "$subdir" != ".." -a "$subdir" != "." -a "$subdir" != "Inbox" -a "$subdir" != "Contacts" -a "$subdir" != "Journal" ]
		then
			subdir=`echo $subdir | sed 's/\ /\\ /g'`
			mkdir "$DEST/.$subdir"
			mkdir "$DEST/.$subdir"/{cur,tmp,new}
			for i in "$SOURCE/$subdir/"*; do  cp -u "$i" "$DEST/.$subdir/cur/"; done
		fi
	done
	IFS="$OIFS"
	chown -R -L $MAILUSER:domain\ users $DEST
	find . -type d -exec chmod $MAILDIR_PERMISSIONS  {} \;
	find . -type f -exec chmod $MAILFILE_PERMISSIONS {} \;
done