# < FUNCTIONS ## BACKUP function etcbackup() { BACKUPDIR=$HOME/dropbox/backup HOSTNAME=$(hostname) FILE=$1 if [ -f $FILE ] then FILENAME=$(echo $FILE | sed 's/\///' | sed 's/\//_/g') cp -v $FILE $BACKUPDIR/$HOSTNAME/$FILENAME else echo $FILE does not exist fi } ## DOTFILES function update_dot() { for i in $HOME/dropbox/dot/[a-zA-Z]*; do if [ -f $i ]; then echo file $i base=`basename $i` dst=$HOME/.$base bak=$HOME/.${base}_bak case $base in vimrc|zshrc|*tgz) echo nothing $i ;; *) if [ -L $dst ]; then rm $dst else mv $dst $bak fi ln -s $i $dst ;; esac else if [ -d $i ]; then echo dir $i base=`basename $i | sed 's/_/\//'` dst=$HOME/.$base bak=$HOME/.${base}_bak case $base in "vim") echo nothing $i ;; *) if [ -e $dst ]; then if [ -L $dst ]; then rm $dst else mv $dst $bak fi fi ln -s $i $dst ;; esac else echo unknown $i fi fi done } ## PDF/LATEX function mkpdf() { pdflatex -shell-escape $1 # latex --output-format=pdf $1 name=`echo $1 | sed 's/.tex//'` EXT=(aux log) for i in $EXT; do rm -v $name.$i done } function gsmerge() { target=$1 echo "target: $target" sleep 1 shift /usr/bin/gs \ -sDEVICE=pdfwrite \ -dCompatibilityLevel=1.4 \ -dNOPAUSE \ -dBATCH \ -sPAPERSIZE=a4 \ -sOUTPUTFILE=$target $* } function gsmerge_medium() { target=$1 echo "target: $target" sleep 1 shift /usr/bin/gs \ -sDEVICE=pdfwrite \ -dPDFSETTINGS=/ebook \ -dCompatibilityLevel=1.4 \ -dNOPAUSE \ -dBATCH \ -sPAPERSIZE=a4 \ -sOutputFile=$target $* } ## USABILITY function lvim() { noglob vim $(echo $1 | awk -F":" '{ print $1" +"$2 }' ) } function mkcd() { mkdir $1 cd $1 } function cpwd() { pwd >! /tmp/pwd } function ppwd() { cd "`cat /tmp/pwd`" } function cp2wd() { cp $@ "`cat /tmp/pwd`" } function publish() { [ -f $1 ] || return DIR=`dirname $1` FILE=`basename $1` mute pushd $DIR scp $FILE pool:public_html/ echo "http://www-pool.math.tu-berlin.de/~runge/$FILE" echo "http://www-pool.math.tu-berlin.de/~runge/$FILE"|xcp mute popd } function securium { port=44350 chromium --proxy-server="socks://localhost:$port" & exit } ## ZSH refresh() { source $HOME/.zshrc } #Decompress any given compressed file extract () { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xvjf $1 ;; *.tar.gz) tar xvzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) unrar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xvf $1 ;; *.tbz2) tar xvjf $1 ;; *.tgz) tar xvzf $1 ;; *.xz) tar xvJf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1 ;; *.7z) 7z x $1 ;; *) echo "don't know how to extract '$1'..." ;; esac else echo "'$1' is not a valid file!" fi } extract_to() { if [ -f $2 ] ;then echo "Extracting to '$2'" local out = $2 else echo "Extracting to '$( pwd )'" local out = $( pwd ) fi if [ -f $1 ] ;then echo "'$1'" else echo "'$1' is not a valid file!" fi } ## compress stuff function tar_tgz { tar cvfz $1.tgz $1 } function tar_tbz { tar cvfj $1.tbz $1 } function tar_tlz { tar --lzma -cvf $1.tlz $1 } ##CRYPTSETUP AND LUKS function lopen () { case $HOST in "homey") case $1 in "video-backup") sudo cryptsetup luksOpen /dev/disk/by-id/ata-SAMSUNG_HD153WI_S1UVJ1VZ400797 $1 ;; "video") sudo cryptsetup luksOpen /dev/disk/by-id/ata-SAMSUNG_HD153WI_S1UVJ1VZ400798 $1 ;; "photos") sudo cryptsetup luksOpen /dev/disk/by-id/ata-SAMSUNG_HD501LJ_S0MUJ1FQ104574 $1 ;; "music") sudo cryptsetup luksOpen /dev/disk/by-id/ata-SAMSUNG_HD501LJ_S0MUJ1FPB87663 $1 ;; "music-external") sudo cryptsetup luksOpen /dev/disk/by-id/ata-ST9500325AS_6VE152RS $1 ;; "photos-external") sudo cryptsetup luksOpen /dev/disk/by-id/ata-ST9500325AS_6VE457TN $1 ;; esac ;; "dvzrv" | "nashoe") case $1 in "music") sudo cryptsetup luksOpen /dev/disk/by-id/ata-ST9500325AS_6VE152RS $1 ;; "photos") sudo cryptsetup luksOpen /dev/disk/by-id/ata-ST9500325AS_6VE457TN $1 ;; "backup") sudo cryptsetup luksOpen /dev/disk/by-id/ata-HGST_HTS725050A7E630_TF755AWHHS9S1M $1 ;; esac esac if [[ -e "/dev/mapper/$1" ]]; then sudo mount /dev/mapper/$1 /mnt/$1 else echo "Device is not available." fi } function lclose () { notmounted=$(mountpoint /mnt/$1) if [ "$?" -eq 0 ]; then #stop services blocking the umount if [[ $HOST == "homey" ]]; then sudo systemctl stop rpc-{idmapd,mountd} rpcbind fi sudo umount /mnt/$1 sudo cryptsetup luksClose $1 #restart services that blocked the umount if [[ $HOST == "homey" ]]; then sudo systemctl start rpc-{idmapd,mountd} rpcbind fi else echo "/mnt/$1 is not a mountpoint or not mounted." fi } ## RSYNC function backupinfo () { rsync -r -n -t -p -o -g -v --progress --delete --ignore-existing --size-only -s --exclude 'lost+found' --exclude '.Trash-1000' --exclude '$RECYCLEBIN' --exclude 'System Volume Information' --exclude '.thumbs' $1 $2 echo "rsync -r -n -t -p -o -g -v --progress --delete --ignore-existing --size-only -s --exclude 'lost+found' --exclude '.Trash-1000' --exclude '\$RECYCLEBIN' --exclude 'System Volume Information' --exclude '.thumbs' /path/to/folder/ /path/to/other/folder" } function backupfolder () { rsync -r -t -p -o -g -v --progress --delete --ignore-existing --size-only -s --exclude 'lost+found' --exclude '.Trash-1000' --exclude '$RECYCLEBIN' --exclude 'System Volume Information' --exclude '.thumbs' $1 $2 } # FUNCTIONS >