dot dot dotfiles
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