Elikkäs lyhyesti tarve oli se, että kun koneellani on Logic/ kansion alla projekti, vaikkapa nyt "Behind the stars" niin haluan tehdä siitä TAR-paketin ja kryptata sen GPG:llä ja sen jälkeen kopioida SCP:llä ulkoiselle serverille siltä varuilta että kone kossahtaa + Time Machine levy kossahtaa. Ja toisaalta myös siksi, että jos tarivtsee ladata tuota projektia jossain muualla enkä ole kotikoneen ääressä niin voin sen ladata tuolta ulkoiselta serveriltä. Kuitenkaan en halua pistää omia projekteja kryptaamatta (noh, lauluharjoittelut on aika harjoittelua niin siksi vielä GPG-kryptattuna.
Eli tietenkin alla olevaa skriptaa tarvitsee muokata jos haluaa sen saada toimimaan, mutta idean nyt siitä saanee.
Itsellä on siis kaksi GPG-avainta joita käytän ja siksi tuossa on kahdelle eri GPG-avaimelle paikka. Samaten tuo serveri "lakka:songs" meinaa että on ~/.ssh/config tiedostossa määritelty "lakka" nimelle serveri ja se on miulla SSH-avaimen takana oleva serveri, eli skripti ei sitten kysy joka kerta itseltä salasanaa.
Saa käyttää jos kiinostaa ja toimii, jos ei niin saa kysyä toki ja ehdottaa korjailuja. Omassa koneessa toimii ja aina käytän siis siten että ko. skripta on kansiossa ~/bin/ nimellä logic_backup ja se on PATH:ssa oleva polku. Eli kun menen Logic-kansioon ja tabitäydennän aina kansion nimen josta haluan bäkupata niin ainakin siten on toiminut. Mene tiedä sitten muuten
Koodi: Valitse kaikki
#!/bin/bash
# This is the path where we copy created .tar.gpg package
# NOTE! Do NOT add / in the end, script will later add it itelf.
SERVER_NAME_AND_PATH=lakka:songs
# Encrypt keys
GPG_KEY="my_gpg@email.com"
GPG_KEY_2="my_another@gpg_email.com"
# Is there enough params given?
if [ $# -ne 1 ]; then
echo "Give folder name what you want to backup!"
exit
fi
# Read the folder name from command line
FOLDER_NAME="$1"
# Create name for TAR-package. It is folder name where we have replaced
# big letters to small letters and replaced spaces with underscores.
# Also special chars should be replaced.
TAR_NAME=$(echo $FOLDER_NAME | sed 's/\///g' | tr '[Ää]' '[aa]' | tr '[Öö]' '[oo]' | tr '[A-Z]' '[a-z]' | tr ' ' '_')
# =============== TAR PACKAGE ================
echo "Backing up folder: $FOLDER_NAME"
echo "Creating TAR-package, wait..."
tar cf "$TAR_NAME".tar "$FOLDER_NAME"
# =============== GPG PACKAGE ================
echo "Creating GPG package from TAR-package"
gpg --encrypt --recipient $GPG_KEY --recipient $GPG_KEY_2 "$TAR_NAME".tar
# =============== COPY PACKAGE ================
scp "$TAR_NAME".tar.gpg "$SERVER_NAME_AND_PATH"/"$TAR_NAME".tar.gpg
# =============== DELETE CREATED PACKAGES ================
rm "$TAR_NAME".tar
rm "$TAR_NAME".tar.gpg