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 🐒
This commit is contained in:
Dmitri Popov
2018-01-30 19:25:34 +01:00
parent 091ae136ac
commit 47b4c4ee12
2 changed files with 43 additions and 25 deletions

View File

@@ -30,7 +30,7 @@ Save the changes.
2. Plug in the backup storage device (or camera, if you configured Little Backup Box as described above) 2. Plug in the backup storage device (or camera, if you configured Little Backup Box as described above)
3. Plug in the card reader and wait till the Raspberry Pi shuts down 3. Plug in the card reader and wait till the Raspberry Pi shuts down
**Note:** To differentiate between different storage cards, the backup script assigns a random 8-digit identifying number to each card (this number is stored in the *CARD_ID* file in the root of the card). The contents of the card is saved on the storage device in a folder with the identifying number as its name. **Note:** To differentiate between different storage cards, the backup script creates a datetime-based *.id* file in the root of each storage card. The name of the *.id* file is also used as the destination backup folder on the storage device.
## Problems? ## Problems?

View File

@@ -5,14 +5,31 @@
# to install the required packages and configure the system. # to install the required packages and configure the system.
# Specify devices and their mount points # Specify devices and their mount points
STORAGE_DEV="sda1" # and other settings
STORAGE_MOUNT_POINT="/media/storage" STORAGE_DEV="sda1" # Name of the storage device
CARD_DEV="sdb1" STORAGE_MOUNT_POINT="/media/storage" # Mount point of the storage device
CARD_MOUNT_POINT="/media/card" 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 # Set the ACT LED to heartbeat
sudo sh -c "echo heartbeat > /sys/class/leds/led0/trigger" 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) # Wait for a USB storage device (e.g., a USB flash drive)
STORAGE=$(ls /dev/* | grep $STORAGE_DEV | cut -d"/" -f3) STORAGE=$(ls /dev/* | grep $STORAGE_DEV | cut -d"/" -f3)
while [ -z ${STORAGE} ] while [ -z ${STORAGE} ]
@@ -24,21 +41,13 @@ done
# When the USB storage device is detected, mount it # When the USB storage device is detected, mount it
mount /dev/$STORAGE_DEV $STORAGE_MOUNT_POINT 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 # 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 timer > /sys/class/leds/led0/trigger"
sudo sh -c "echo 1000 > /sys/class/leds/led0/delay_on" sudo sh -c "echo 1000 > /sys/class/leds/led0/delay_on"
# 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
# Wait for a card reader or a camera # Wait for a card reader or a camera
CARD_READER=$(ls /dev/* | grep $CARD_DEV | cut -d"/" -f3) CARD_READER=$(ls /dev/* | grep $CARD_DEV | cut -d"/" -f3)
until [ ! -z $CARD_READER ] until [ ! -z $CARD_READER ]
@@ -52,21 +61,30 @@ if [ ! -z $CARD_READER ]; then
mount /dev/$CARD_DEV $CARD_MOUNT_POINT mount /dev/$CARD_DEV $CARD_MOUNT_POINT
# # Set the ACT LED to blink at 500ms to indicate that the card has been mounted # # 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" sudo sh -c "echo 500 > /sys/class/leds/led0/delay_on"
# Create the CARD_ID file containing a random 8-digit identifier if doesn't exist # Create a .id random identifier file if doesn't exist
if [ ! -f $CARD_MOUNT_POINT/CARD_ID ]; then cd $CARD_MOUNT_POINT
< /dev/urandom tr -cd 0-9 | head -c 8 > $CARD_MOUNT_POINT/CARD_ID if [ ! -f *.id ]; then
touch $(date -d "today" +"%Y%m%d%H%M").id
fi 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 # Log the output of the lsblk command for troubleshooting
sudo lsblk > lsblk.log sudo lsblk > lsblk.log
# Read the 8-digit identifier number from the CARD_ID file on the card
# and use it as a directory name in the backup path
read -r ID < $CARD_MOUNT_POINT/CARD_ID
BACKUP_PATH=$STORAGE_MOUNT_POINT/"$ID"
# Perform backup using rsync # Perform backup using rsync
rsync -avh $CARD_MOUNT_POINT/ $BACKUP_PATH 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 # Turn off the ACT LED to indicate that the backup is completed
sudo sh -c "echo 0 > /sys/class/leds/led0/brightness" sudo sh -c "echo 0 > /sys/class/leds/led0/brightness"
fi fi