dot dot dotfiles
at main 100 lines 3.5 kB view raw
1#!/usr/bin/bash 2 3UNAME=smexus 4DEV=$(ls /run/media/$UNAME) 5 6echo "---------------------------------------------------" 7echo "1. Backup FROM /home TO $DEV" 8echo "2. Backup FROM /data TO $DEV (excluding mega, Dropbox, docker)" 9echo "3. Backup FROM /data/mega TO $DEV" 10echo "4. Backup FROM /data/Dropbox TO $DEV" 11echo "5. Backup FROM $DEV TO /home" 12echo "6. Backup FROM $DEV TO /data (excluding mega, Dropbox)" 13echo "7. Backup FROM $DEV TO /data/mega" 14echo "8. Backup FROM $DEV TO /data/Dropbox" 15echo "---------------------------------------------------" 16 17read -p "Enter option: " OPT 18if [ "$OPT" == 1 ]; then 19 read -p "Backup FROM /home TO $DEV right (y/n)? " DOIT 20elif [ "$OPT" == 2 ]; then 21 read -p "Backup FROM /data TO $DEV (exluding mega, Dropbox) right (y/n)? " DOIT 22elif [ "$OPT" == 3 ]; then 23 read -p "Backup FROM /data/mega TO $DEV right (y/n)? " DOIT 24elif [ "$OPT" == 4 ]; then 25 read -p "Backup FROM /data/Dropbox TO $DEV right (y/n)? " DOIT 26elif [ "$OPT" == 5 ]; then 27 read -p "Backup FROM $DEV TO /home right (y/n)? " DOIT 28elif [ "$OPT" == 6 ]; then 29 read -p "Backup FROM $DEV TO /data (exluding mega, Dropbox) right (y/n)? " DOIT 30elif [ "$OPT" == 7 ]; then 31 read -p "Backup FROM $DEV TO /data/mega right (y/n)? " DOIT 32elif [ "$OPT" == 8 ]; then 33 read -p "Backup FROM $DEV TO /data/Dropbox right (y/n)? " DOIT 34else 35 echo "Unknown option" 36 exit 1 37fi 38 39DEV="/run/media/$UNAME/"$(ls /run/media/$UNAME) 40 41#if ([ "$DOIT" != "y" ] || [ "$DOIT" != "Y" ]); then 42if [ "$DOIT" != "y" ]; then 43 exit 0 44fi 45 46read -p "Dry run ('NO' if not)? " DR 47# flags are: 48# -n : dry run 49# -i : itemize changes 50# -r : recurse into directories 51# -l : copy symlinks as symlinks 52# -t : preserve modification times 53# -g : preserve group 54# -o : preserve owner 55# -D : preserve both device and special files 56# -v : verbose 57# -u : only update newer versions 58# ... or -a = "-rlptgoD", where p = preserve permissions 59#FLAGS="-nirltgoDv" 60FLAGS="-nirtgoDv" 61if [ "$DR" == "NO" ]; then 62 echo "This is NOT a dry run - data will be changed" 63 #FLAGS="-irv" 64 FLAGS="-irltgoDvu" # -u to only update newer versions 65fi 66 67# modify-window matches timestamps only within 1s - critical for FAT32 partions; 68# see https://linux.die.net/man/1/rsync 69RSOPTS="--chmod=Du+rwx --progress --delete --ignore-errors --include '.*' --modify-window=1" 70 71# sudo needed in all these to copy .git files to FAT32 systems 72if [ "$OPT" == 1 ]; then 73 DEST=$DEV/home/ 74 sudo rsync $FLAGS $RSOPTS --exclude $UNAME/.thunderbird \ 75 --exclude $UNAME/.mozilla/ --exclude $UNAME/.cache -s /home/ $DEST 76elif [ "$OPT" == 2 ]; then 77 DEST=$DEV/data/ 78 sudo rsync $FLAGS $RSOPTS --exclude "/Dropbox/" \ 79 --exclude "/mega/" --exclude "/docker/" -s /data/ $DEST 80elif [ "$OPT" == 3 ]; then 81 DEST=$DEV/data/mega/ 82 sudo rsync $FLAGS $RSOPTS -s /data/mega/ $DEST 83elif [ "$OPT" == 4 ]; then 84 DEST=$DEV/data/Dropbox/ 85 sudo rsync $FLAGS $RSOPTS -s /data/Dropbox/ $DEST 86elif [ "$OPT" == 5 ]; then 87 SRC=$DEV/home/ 88 sudo rsync $FLAGS $RSOPTS --exclude $UNAME/.thunderbird \ 89 --exclude $UNAME/.mozilla/ --exclude $UNAME/.cache -s $SRC /home/ 90elif [ "$OPT" == 6 ]; then 91 SRC=$DEV/data/ 92 sudo rsync $FLAGS $RSOPTS --exclude "/Dropbox/" \ 93 --exclude "/mega/" -s $SRC /data/ 94elif [ "$OPT" == 7 ]; then 95 SRC=$DEV/data/mega/ 96 sudo rsync $FLAGS $RSOPTS -s $SRC /data/mega/ 97elif [ "$OPT" == 8 ]; then 98 SRC=$DEV/data/Dropbox/ 99 sudo rsync $FLAGS $RSOPTS -s $SRC /data/Dropbox/ 100fi