summaryrefslogtreecommitdiffstats
path: root/public/.local/bin/laptop-backup.sh
diff options
context:
space:
mode:
authorMitsuo Tokumori <[email protected]>2024-09-11 04:25:38 +0900
committerMitsuo Tokumori <[email protected]>2024-09-11 04:25:38 +0900
commit37ff7062874b72bafa99afe661f42653565ed511 (patch)
tree60372bf7fdb94c9034c7d1cc5a17cd7df526c4fc /public/.local/bin/laptop-backup.sh
parentdca319b8d9d221f1aaf3a00ee457d202096c66ac (diff)
downloaddotfiles-37ff7062874b72bafa99afe661f42653565ed511.tar.gz
dotfiles-37ff7062874b72bafa99afe661f42653565ed511.tar.bz2
dotfiles-37ff7062874b72bafa99afe661f42653565ed511.zip
RESTRUCTURE. Replicate relative paths in public/
Diffstat (limited to 'public/.local/bin/laptop-backup.sh')
-rwxr-xr-xpublic/.local/bin/laptop-backup.sh38
1 files changed, 38 insertions, 0 deletions
diff --git a/public/.local/bin/laptop-backup.sh b/public/.local/bin/laptop-backup.sh
new file mode 100755
index 0000000..a22c179
--- /dev/null
+++ b/public/.local/bin/laptop-backup.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+# Fast backup using rsync
+
+if [ $# -ne 2 ]; then
+ echo "Usage: $(basename "$0") /dev/sdX backup"
+ exit 1
+fi
+
+if [ "$(id -u)" -ne 0 ]; then
+ echo "This script must be run as root."
+ exit 1
+fi
+
+rsync_options="-auvP --delete"
+device=$1
+name=$2
+
+# Note: `name` (nor `device`) should not contain spaces
+
+cryptsetup open --type luks $device $name
+if [ $? -ne 0 ]; then
+ # bad device
+ exit 1
+fi
+mount /dev/mapper/$name /mnt/$name
+# TODO: stop backing up /var. Backup is just for Postgres and Mediawiki.
+# `/var` is used by too many applications. Specialy pacman that clutters it
+# with cached binaries.
+rsync $rsync_options /var /mnt/$name # <10G
+rsync $rsync_options /home /mnt/$name # <900G
+rsync $rsync_options /etc /mnt/$name # <20M
+echo "Backup complete."
+df -h #| grep -E "${name}|var|home|etc"
+umount /mnt/$name
+cryptsetup close $name
+
+echo "All done. Check \`$ lsblk\` before unplugging the storage device."