backup-rcopy/hosts/scripts/net_mounted_dir_backup.sh

106 lines
3.2 KiB
Bash
Executable File

#!/usr/bin/env bash
## - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
## -
## - If network directory have to mount (its only possible if backuping
## - localhost) you need an entry in your /etc/fstab, becaus we mount thuch
## - remote directories with "mount <remote directory)
## -
## - i.e. for a samba mounted directory you need an entry like:
## -
## - //192.168.100.20/qinter /mnt/file-win7/qinter smbfs noauto,user=Administrator,password=chnarzfoo5 0 0
## -
## - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
err_Log=${LOCK_DIR}/dir.err.log
> $err_Log
## - load functions
## -
. $rcopy_functions_file
if $mount_netdir ; then
if [ $srcHost != "localhost" ] || $_via_ssh_tunnel ;then
## - Network directory mounted ?
## -
if ! $($ssh ${ssh_user}@${srcHost} df -h 2> /dev/null | grep -q ${backup_dir} 2>/dev/null) ; then
$ssh ${ssh_user}@${srcHost} "$sudo mount ${backup_dir}" > /dev/null 2> $err_Log
if [[ "$?" -ne 0 ]]; then
echolog ""
echolog "\t[ERROR] Mounting '${backup_dir}' on '${srcHost}' failed!\n $(cat "$err_Log")"
exit 1
else
sleep 5
if ! $($ssh ${ssh_user}@${srcHost} df -h 2> /dev/null | grep -q ${backup_dir} 2>/dev/null) ; then
echolog ""
echolog "\t[ERROR] Something went wrong with mounting '${backup_dir}' on '${srcHost}'!"
exit 1
fi
fi
fi
else
## - Network directory mounted ?
## -
if ! df | grep "$backup_dir" > /dev/null 2>&1 ;then
$mount $backup_dir > /dev/null 2>&1
fi
sleep 5
if ! df | grep "$backup_dir" > /dev/null 2>&1 ;then
print_error_stdout "Cannot mount network directory to \"$backup_dir\":\n $(cat $err_Log)"
echolog ""
echolog "\t[ERROR] Cannot mount network directory to \"$backup_dir\""
exit 1
fi
fi
fi
## - Check if directory is empty
## -
if [ $srcHost != "localhost" ] || $_via_ssh_tunnel ;then
if [ ! "$( $ssh ${ssh_user}@${srcHost} ls -A ${backup_dir})" ] ; then
echolog ""
echolog "\t[ NOTICE ]: Directory \"${backup_dir}\" on \"${srcHost}\" is empty. So nothing to do..\n"
exit 0
fi
else
if [ ! "$(ls -A $backup_dir)" ]; then
echolog ""
echolog "\t[ NOTICE ]: Directory \"$backup_dir\" is empty. So nothing to do..\n"
exit 0
fi
fi
echolog "\n\tBackup network directory \"$backup_dir\" ( `$date +%H`:`$date +%M` h )"
backup_dir=$backup_dir $script_dir/dir_backup.sh
if $mount_netdir ; then
if [ $srcHost != "localhost" ];then
$ssh ${ssh_user}@${srcHost} "$sudo umount ${backup_dir}" > /dev/null 2> $err_Log
if [[ "$?" -ne 0 ]]; then
echolog ""
echolog "\t[ERROR] Unounting '${backup_dir}' on '${srcHost}' failed!\n $(cat "$err_Log")"
exit 1
fi
#print_error_stdout "Mounting network directories is only possible for localhost - yet:\n $(cat $err_Log)"
#echolog ""
#echolog "\t[ERROR] Mounting network directories is only possible for localhost - yet"
#exit 1
else
$umount $backup_dir 2> /dev/null
fi
fi
exit 0