#/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. LOGFILE=mkperm_test.log 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 mailuser=sue SOURCE=$EXCHANGE_MIRROR/$mailuser MAILUSER=`echo $mailuser | tr '[A-Z]' '[a-z]'` # make mailuser lowercase for target DEST=$DOMAIN_HOMES/$MAILUSER/Maildir cd $SOURCE 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 # cp -u $SOURCE/Inbox/* $DEST/cur 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 chown -R -L $MAILUSER:domain\ users $DEST find . -type d -exec chmod $MAILDIR_PERMISSIONS {} \; find . -type f -exec chmod $MAILFILE_PERMISSIONS {} \; #done