Files
little-backup-box-Bram/backup.sh
Dmitri Popov a2c130b657 Minor tweak
2018-01-30 19:15:43 +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