Files
little-backup-box-Bram/backup.sh
Dmitri Popov 47b4c4ee12 Squashed commit of the following:
commit a2c130b657
Author: Dmitri Popov <dmpop@linux.com>
Date:   Tue Jan 30 19:15:43 2018 +0100

    Minor tweak

commit 257a327656
Author: Dmitri Popov <dmpop@linux.com>
Date:   Tue Jan 30 19:09:24 2018 +0100

    Fix -ext

commit b2e5b1ceec
Author: Dmitri Popov <dmpop@linux.com>
Date:   Tue Jan 30 15:28:24 2018 +0100

    Update README.md

commit 5e35563156
Author: Dmitri Popov <dmpop@linux.com>
Date:   Tue Jan 30 15:03:04 2018 +0100

    Comment options. Shutdown time as variable

commit 36386b00d8
Author: Dmitri Popov <dmpop@linux.com>
Date:   Tue Jan 30 14:58:12 2018 +0100

    Add geotagging

commit 59390b24ee
Author: Dmitri Popov <dmpop@linux.com>
Date:   Tue Jan 30 14:55:41 2018 +0100

    Delete config.cfg

commit 59fa6d0ced
Author: Dmitri Popov <dmpop@linux.com>
Date:   Tue Jan 30 14:51:11 2018 +0100

    Update config.cfg

commit 04feb7c260
Author: Dmitri Popov <dmpop@linux.com>
Date:   Mon Jan 29 15:45:55 2018 +0100

    Remove mount share. Add config

commit 1d84ece06b
Author: Dmitri Popov <dmpop@linux.com>
Date:   Mon Jan 29 15:43:58 2018 +0100

    Create config.cfg

commit 47ad5850cc
Author: Dmitri Popov <dmpop@linux.com>
Date:   Fri Jan 26 15:18:21 2018 +0100

    Replace NFS with SHARE

commit 1c2259d7e6
Author: Dmitri Popov <dmpop@linux.com>
Date:   Fri Jan 26 14:38:31 2018 +0100

    Add NFS mount and backup

commit e37bc58168
Author: Dmitri Popov <dmpop@linux.com>
Date:   Fri Jan 26 13:20:17 2018 +0100

    Add inactivity shutdown

commit d759ac4e59
Author: Dmitri Popov <dmpop@linux.com>
Date:   Sat Jan 13 18:22:09 2018 +0100

    Fix card id 🐒

commit c0ede01f95
Author: Dmitri Popov <dmpop@linux.com>
Date:   Sat Jan 13 18:04:41 2018 +0100

    Exclude id file from backup 🐒

commit e1c6695d21
Author: Dmitri Popov <dmpop@linux.com>
Date:   Sat Jan 13 17:54:48 2018 +0100

    Fix card id 🐒

commit a0edc912ce
Author: Dmitri Popov <dmpop@linux.com>
Date:   Sat Jan 13 17:52:31 2018 +0100

    Fix card id 🐒

commit 4d9832c47b
Author: Dmitri Popov <dmpop@linux.com>
Date:   Sat Jan 13 17:41:43 2018 +0100

    Fix card id 🐒

commit 3bf32c33fb
Author: Dmitri Popov <dmpop@linux.com>
Date:   Sat Jan 13 17:22:38 2018 +0100

    Date/time as card id 🐒

commit acd75a2e6b
Author: Dmitri Popov <dmpop@linux.com>
Date:   Mon Jan 8 19:00:34 2018 +0100

    Add else to handle existing .id file 🐒

commit e409e19bc8
Author: Dmitri Popov <dmpop@linux.com>
Date:   Mon Jan 8 18:46:38 2018 +0100

    Improve card ID handling 🐒
2018-01-30 19:25:34 +01:00

94 lines
3.1 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# IMPORTANT:
# Run the install-little-backup-box.sh script first
# to install the required packages and configure the system.
# Specify devices and their mount points
# and other settings
STORAGE_DEV="sda1" # Name of the storage device
STORAGE_MOUNT_POINT="/media/storage" # Mount point of the storage device
CARD_DEV="sdb1" # Name of the storage card
CARD_MOUNT_POINT="/media/card" # Mount point of the storage card
GEO_REF="GEOREF.JPG" # Name of the reference photo to be used for geotagging
SHUTD="5" # Minutes to wait before shutdown due to inactivity
# If there is a wpa_supplicant.conf file in the root of the storage device
# Rename the original config file,
# move wpa_supplicant.conf from the card to /etc/wpa_supplicant/
# Reboot to enable networking
if [ -f "$STORAGE_MOUNT_POINT/wpa_supplicant.conf" ]; then
sudo sh -c "echo 100 > /sys/class/leds/led0/delay_on"
mv /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf.bak
mv "$STORAGE_MOUNT_POINT/wpa_supplicant.conf" /etc/wpa_supplicant/wpa_supplicant.conf
reboot
fi
# Set the ACT LED to heartbeat
sudo sh -c "echo heartbeat > /sys/class/leds/led0/trigger"
# Shutdown after a specified period of time (in minutes) if no device is connected.
sudo shutdown -h $SHUTD "Shutdown is activated. To cancel: sudo shutdown -c"
# Wait for a USB storage device (e.g., a USB flash drive)
STORAGE=$(ls /dev/* | grep $STORAGE_DEV | cut -d"/" -f3)
while [ -z ${STORAGE} ]
do
sleep 1
STORAGE=$(ls /dev/* | grep $STORAGE_DEV | cut -d"/" -f3)
done
# When the USB storage device is detected, mount it
mount /dev/$STORAGE_DEV $STORAGE_MOUNT_POINT
# Cancel shutdown
sudo shutdown -c
# Set the ACT LED to blink at 1000ms to indicate that the storage device has been mounted
sudo sh -c "echo timer > /sys/class/leds/led0/trigger"
sudo sh -c "echo 1000 > /sys/class/leds/led0/delay_on"
# Wait for a card reader or a camera
CARD_READER=$(ls /dev/* | grep $CARD_DEV | cut -d"/" -f3)
until [ ! -z $CARD_READER ]
do
sleep 1
CARD_READER=$(ls /dev/sd* | grep $CARD_DEV | cut -d"/" -f3)
done
# If the card reader is detected, mount it and obtain its UUID
if [ ! -z $CARD_READER ]; then
mount /dev/$CARD_DEV $CARD_MOUNT_POINT
# # Set the ACT LED to blink at 500ms to indicate that the card has been mounted
sudo sh -c "echo 500 > /sys/class/leds/led0/delay_on"
# Create a .id random identifier file if doesn't exist
cd $CARD_MOUNT_POINT
if [ ! -f *.id ]; then
touch $(date -d "today" +"%Y%m%d%H%M").id
fi
ID_FILE=$(ls *.id)
ID="${ID_FILE%.*}"
cd
# Set the backup path
BACKUP_PATH=$STORAGE_MOUNT_POINT/"$ID"
# Log the output of the lsblk command for troubleshooting
sudo lsblk > lsblk.log
# Perform backup using rsync
rsync -av --exclude "*.id" $CARD_MOUNT_POINT/ $BACKUP_PATH
# Geotag photos if the reference photo exists
if [ -f "$STORAGE_MOUNT_POINT/$GEO_REF" ]; then
cd $STORAGE_MOUNT_POINT
exiftool overwrite_original_in_place -r -ext jpg -tagsFromFile $GEO_REF -gps:all .
fi
# Turn off the ACT LED to indicate that the backup is completed
sudo sh -c "echo 0 > /sys/class/leds/led0/brightness"
fi
# Shutdown
sync
shutdown -h now