Compare commits

...

1 Commits

Author SHA1 Message Date
87c4b0073b functions! 2021-01-14 12:11:43 +03:00

View File

@ -1,12 +1,13 @@
#!/bin/bash
#not working encrypted setup #not working encrypted setup
#vars #vars
IP="192.168.100.16" IP="192.168.100.100"
source="rsync@"$IP"/rsync/" source="rsync@"$IP"/mnt/"
bootSize=256M bootSize=256M
#prepare
##check for root ##check for root
testVars() {
if [ `id -u` != 0 ] ; then if [ `id -u` != 0 ] ; then
echo "==> Need to be root" echo "==> Need to be root"
exit 1 exit 1
@ -18,13 +19,13 @@ then
echo "==> Host unavailable, exiting" echo "==> Host unavailable, exiting"
exit 1 exit 1
fi fi
}
##check for space chooseBackup() {
##get list of backups
rsync_dir_list=($(rsync --password-file=rsync_pass rsync://$source | awk '{print $5}' | grep -v .DS_Store | grep -v "@Recently-Snapshot" | sort -r | head -n -1)) rsync_dir_list=($(rsync --password-file=rsync_pass rsync://$source | awk '{print $5}' | grep -v .DS_Store | grep -v "@Recently-Snapshot" | sort -r | head -n -1))
##choose backup ##choose backup
echo "==>" ${#rsync_dir_list[@]} backups: ${rsync_dir_list[@]} echo "==>" ${#rsync_dir_list[@]} backups: ${rsync_dir_list[@]}
read -p "Input backup number:" backupNum read -p "Input backup number:" backupNum
@ -33,7 +34,9 @@ do
read -p "Input backup number:" backupNum read -p "Input backup number:" backupNum
done done
let "backupNum -= 1" let "backupNum -= 1"
}
setTargetDisk() {
##set target drive ##set target drive
lsblk -o NAME,LABEL,FSTYPE,SIZE,MOUNTPOINT,MODEL lsblk -o NAME,LABEL,FSTYPE,SIZE,MOUNTPOINT,MODEL
@ -57,18 +60,17 @@ read -p "Enter extra amount of swap (empty == 512):" swapExtra
if [ -z "$swapExtra" ] && swapExtra=512 if [ -z "$swapExtra" ] && swapExtra=512
let "swapSize += swapExtra" #add 512 mbs to swap for swap, not only hibernation let "swapSize += swapExtra" #add 512 mbs to swap for swap, not only hibernation
swapSize=$swapSize"M" swapSize=$swapSize"M"
}
#DEPLOY #DEPLOY
warnDeploy() {
echo deployin\' ${rsync_dir_list[$backupNum]} on $targetDrive in 15s... echo deployin\' ${rsync_dir_list[$backupNum]} on $targetDrive in 15s...
sleep 15 sleep 15
trap 'echo "==> Interrupted by user"; exit 1' 2 trap 'echo "==> Interrupted by user"; exit 1' 2
}
partitionDisk() {
##clear mbr for sure ##clear mbr for sure
dd if=/dev/zero of=$targetDrive count=512 dd if=/dev/zero of=$targetDrive count=512
##fdisk ##fdisk
@ -95,7 +97,9 @@ echo
echo w echo w
) | fdisk $targetDrive ) | fdisk $targetDrive
# IMHO this ^ is less obfuscated way # IMHO this ^ is less obfuscated way
}
makeFS() {
##mkfs's ##mkfs's
echo "==> Making filesystems..." echo "==> Making filesystems..."
echo "mkswap" echo "mkswap"
@ -112,9 +116,9 @@ mkfs.ext4 /dev/mapper/targetLuks
else else
mkfs.ext4 $targetDrive"3" mkfs.ext4 $targetDrive"3"
fi fi
}
sleep 15 getUUIDs() {
##get disk's uuid ##get disk's uuid
echo "==> Got UUIDs!" echo "==> Got UUIDs!"
UUIDS=($(blkid $targetDrive"1" $targetDrive"2" $targetDrive"3" -o value -s UUID)) UUIDS=($(blkid $targetDrive"1" $targetDrive"2" $targetDrive"3" -o value -s UUID))
@ -123,7 +127,9 @@ then
UUIDS[3]=UUIDS[2] UUIDS[3]=UUIDS[2]
UUIDS[2]=`blkid /dev/mapper/targetLuks -o value -s UUID` UUIDS[2]=`blkid /dev/mapper/targetLuks -o value -s UUID`
fi fi
}
mountDisk() {
##mount disks ##mount disks
echo "==> Mounting..." echo "==> Mounting..."
if $encryptedDevice if $encryptedDevice
@ -135,7 +141,9 @@ fi
mkdir /mnt/boot mkdir /mnt/boot
mount $targetDrive"2" /mnt/boot mount $targetDrive"2" /mnt/boot
}
copyFiles() {
##rsync ##rsync
echo "==> Copying from NAS..." echo "==> Copying from NAS..."
rsync --archive --password-file=rsync_pass rsync://$source${rsync_dir_list[$backupNum]}/ /mnt/ rsync --archive --password-file=rsync_pass rsync://$source${rsync_dir_list[$backupNum]}/ /mnt/
@ -143,7 +151,9 @@ retVal=$?
if [ $retVal -ne 0 ]; then if [ $retVal -ne 0 ]; then
exit 1 exit 1
fi fi
}
updateFstab() {
##update fstab ##update fstab
echo "==> Updating fstab..." echo "==> Updating fstab..."
mv /mnt/etc/fstab /mnt/etc/fstab.orig mv /mnt/etc/fstab /mnt/etc/fstab.orig
@ -154,6 +164,10 @@ rm /mnt/etc/fstab.orig #TODO OFC we need to check mountpoint, not only type of F
echo "==> Result:" echo "==> Result:"
cat /mnt/etc/fstab cat /mnt/etc/fstab
}
configBootloader()
{
##update grub linux options ##update grub linux options
if $encryptedDevice if $encryptedDevice
cat /mnt/etc/default/grub | sed 's/cryptdevice=UUID=[A-Fa-f0-9-]*:cryptroot /cryptdevice=UUID='${UUIDS[3]}':cryptroot/' > /mnt/etc/default/grub cat /mnt/etc/default/grub | sed 's/cryptdevice=UUID=[A-Fa-f0-9-]*:cryptroot /cryptdevice=UUID='${UUIDS[3]}':cryptroot/' > /mnt/etc/default/grub
@ -162,7 +176,10 @@ cat /mnt/etc/default/grub | sed 's/cryptdevice=UUID=[A-Fa-f0-9-]*:cryptroot //'
fi fi
cat /mnt/etc/default/grub | sed 's/resume=UUID=[A-Fa-f0-9-]*/resume=UUID='${UUIDS[0]}'/' > /mnt/etc/default/grub cat /mnt/etc/default/grub | sed 's/resume=UUID=[A-Fa-f0-9-]*/resume=UUID='${UUIDS[0]}'/' > /mnt/etc/default/grub
}
updateBootloader()
{
##mount system stuff ##mount system stuff
echo "==> Mounting /dev, /sys, /proc..." echo "==> Mounting /dev, /sys, /proc..."
mount /dev /mnt/dev --bind mount /dev /mnt/dev --bind
@ -182,9 +199,28 @@ grub-install $targetDrive
exit exit
EOF EOF
}
deinit()
{
#deinit #deinit
echo "==> Syncing..." echo "==> Syncing..."
sync sync
echo "==> Unmounting..." echo "==> Unmounting..."
umount -R /mnt umount -R /mnt
echo "==> Done!" echo "==> Done!"
}
# funcions
testVars()
chooseBackup()
setTargetDisk()
warnDeploy()
partitionDisk()
makeFS()
getUUIDs()
mountDisk()
copyFiles()
updateFstab()
configBootloader()
updateBootloader()
deinit()