You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
3.9 KiB

#!/bin/bash
#sudo apt-get install -y rsync
OK=0
response="na"
echo "#######################################"
echo "What kind of backup do you want to do:"
echo "Create new from ssh -> ns "
echo "Create new from local -> nl "
echo "Create itteration from ssh -> is"
echo "Create itteration from local -> il"
echo "Restore from local to local -> rl"
echo "#######################################"
# loop until we get a good answer and break out
while [ "$OK" = 0 ]
do
read -p "Please choose : ns OR nl OR is OR il OR rl OR quit: " input
# Test the input
if [ "$input" = "ns" ] || [ "$input" = "nS" ] || [ "$input" = "Ns" ] || [ "$input" = "NS" ]
then
response="ns"
OK=1
elif [ "$input" = "nl" ] || [ "$input" = "nL" ] || [ "$input" = "Nl" ] || [ "$input" = "NL" ]
then
response="nl"
OK=1
elif [ "$input" = "is" ] || [ "$input" = "iS" ] || [ "$input" = "iS" ] || [ "$input" = "IS" ]
then
response="is"
OK=1
elif [ "$input" = "il" ] || [ "$input" = "iL" ] || [ "$input" = "Il" ] || [ "$input" = "IL" ]
then
response="il"
OK=1
elif [ "$input" = "rl" ] || [ "$input" = "rL" ] || [ "$input" = "Rl" ] || [ "$input" = "RL" ]
then
response="rl"
OK=1
elif [ "$input" = "help" ] || [ "$input" = "h" ]
then
echo "What kinf of backup do you want to do:"
echo "Create new from ssh -> ns "
echo "Create new from local -> nl "
echo "Create itteration from ssh -> is"
echo "Create itteration from local -> il"
echo "Restore from local to local -> rl"
elif [ "$input" = "q" ] || [ "$input" = "quit" ]
then
exit
else
# Invalid input
echo "INPUT ERROR: Must be ns OR nl OR is OR il OR rl OR quit: Please try again."
fi
done
if [ "$response" = "ns" ];
then
read -p "Source ip address: " -i -e sourceIp
read -p "Source user name: " -i -e sourceUser
read -p "Source directory: " -i "/" -e sourceDir
read -p "Target directory: " -i "/" -e targetDir
sudo rsync -aAXP -e ssh --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","swapfile","lost+found",".cache","Downloads",".ecryptfs"} $sourceUser@$sourceIp:$sourceDir $targetDir
elif [ "$response" = "nl" ];
then
read -p "Source directory: " -i "/" -e sourceDir
read -p "Target directory: " -i "/" -e targetDir
sudo rsync -aAXP --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","swapfile","lost+found",".cache","Downloads",".ecryptfs"} $sourceDir $targetDir
elif [ "$response" = "is" ];
then
read -p "Source ip address: " -i -e sourceIp
read -p "Source user name: " -i -e sourceUser
read -p "Source directory: " -i "/" -e sourceDir
read -p "Target current directory: " -i "/" -e linkDir
read -p "Target itteration directory: " -i "/" -e targetDir
sudo rsync -aAXPH -e ssh --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","swapfile","lost+found",".cache","Downloads",".ecryptfs"} --link-dest=$linkDir $sourceUser@$sourceIp:$sourceDir $targetDir
elif [ "$response" = "il" ];
then
read -p "Source directory: " -i "/" -e sourceDir
read -p "Target current directory: " -i "/" -e linkDir
read -p "Target itteration directory: " -i "/" -e targetDir
sudo rsync -aAXPH --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","swapfile","lost+found",".cache","Downloads",".ecryptfs"} --link-dest=$linkDir $sourceDir $targetDir
elif [ "$response" = "rl" ];
then
lsblk
read -p "Target Device to be mounted: " -i "/dev/" -e deviceName
read -p "Target device mount direcotry: " -i "/mnt/" -e targetDir
read -p "Backup directory: " -i "/" -e sourceDir
sudo mount $deviceName $targetDir
ls $targetDir
sudo rsync -aAXP --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","swapfile","lost+found",".cache","Downloads",".ecryptfs"} $sourceDir $targetDir
fi
exit