From e13e3a74bc6a0ecb26687ac9dcbfb16a87cb52b8 Mon Sep 17 00:00:00 2001 From: Dmitri Popov Date: Wed, 21 Mar 2018 07:19:17 +0100 Subject: [PATCH] Web UI -> Remote control. Rename scripts --- README.md | 12 +++++++----- gphoto-backup.sh => camera-backup.sh | 0 backup.sh => card-backup.sh | 0 install-little-backup-box.sh | 24 ++++++++++++------------ installer.png | Bin 16421 -> 16740 bytes webui.png => rc.png | Bin webui.py => rc.py | 6 +++--- 7 files changed, 22 insertions(+), 20 deletions(-) rename gphoto-backup.sh => camera-backup.sh (100%) rename backup.sh => card-backup.sh (100%) rename webui.png => rc.png (100%) rename webui.py => rc.py (93%) diff --git a/README.md b/README.md index 3b135b4..5496cde 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Little Backup Box supports three backup modes: - **Card backup** Automatically backs up the contents of a storage card to an external storage device. - **Camera backup** Transfers photos, raw files, and videos from the camera connected directly to the Raspberry Pi. The transferred files are saved in the */home/pi/[CAMERA MODEL]* directory on the system storage card. **Important** Make sure that the camera is set to the MTP USB connection mode. -- **Web UI** Simple web interface that allows you to manually choose one of the two modes described above. +- **Remote control** Provides a simple web interface to manually choose one of the two modes described above. During the installation, choose the desired mode from the selection dialog. @@ -26,7 +26,9 @@ When prompted, reboot the Raspberry Pi. ## Usage -In the card backup mode: +The exact backup steps depend on the backup mode. + +### Card backup mode 1. Boot the Raspberry Pi 2. Plug in a backup storage device @@ -37,7 +39,7 @@ To geocorrelate the backed up photos, place a GPX file in the root of the storag **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. -In the camera backup mode: +### Camera backup mode 1. Boot the Raspberry Pi 2. Connect the camera to the Raspberry Pi @@ -46,12 +48,12 @@ In the camera backup mode: Note that the direct camera file transfer script doesn't support geocorrelation. -In the Web UI mode: +### Remote control mode: 1. Point the browser to *http://[IP-ADDRESS]:8080* (replace *[IP-ADDRESS]* with the actual IP address of the Raspberry Pi) 2. Start the desired backup mode by pressing the appropriate button. - + ## Problems? diff --git a/gphoto-backup.sh b/camera-backup.sh similarity index 100% rename from gphoto-backup.sh rename to camera-backup.sh diff --git a/backup.sh b/card-backup.sh similarity index 100% rename from backup.sh rename to card-backup.sh diff --git a/install-little-backup-box.sh b/install-little-backup-box.sh index 1811c93..960f914 100755 --- a/install-little-backup-box.sh +++ b/install-little-backup-box.sh @@ -34,9 +34,9 @@ BACKTITLE="Little Backup Box" TITLE="Backup mode" MENU="Select the desired backup mode:" -OPTIONS=(1 "Card Backup" - 2 "Camera Backup" - 3 "Web UI") +OPTIONS=(1 "Card backup" + 2 "Camera backup" + 3 "Remote backup") CHOICE=$(dialog --clear \ --backtitle "$BACKTITLE" \ @@ -49,19 +49,19 @@ CHOICE=$(dialog --clear \ clear case $CHOICE in 1) - crontab -l | { cat; echo "@reboot sudo /home/pi/little-backup-box/backup.sh"; } | crontab - crontab -l | { cat; echo "#@reboot sudo /home/pi/little-backup-box/gphoto-backup.sh"; } | crontab - crontab -l | { cat; echo "#@reboot sudo /home/pi/little-backup-box/webui.py"; } | crontab + crontab -l | { cat; echo "@reboot sudo /home/pi/little-backup-box/card-backup.sh"; } | crontab + crontab -l | { cat; echo "#@reboot sudo /home/pi/little-backup-box/camera-backup.sh"; } | crontab + crontab -l | { cat; echo "#@reboot sudo /home/pi/little-backup-box/rc.py"; } | crontab ;; 2) - crontab -l | { cat; echo "#@reboot sudo /home/pi/little-backup-box/backup.sh"; } | crontab - crontab -l | { cat; echo "@reboot sudo /home/pi/little-backup-box/gphoto-backup.sh"; } | crontab - crontab -l | { cat; echo "#@reboot sudo /home/pi/little-backup-box/webui.py"; } | crontab + crontab -l | { cat; echo "#@reboot sudo /home/pi/little-backup-box/card-backup.sh"; } | crontab + crontab -l | { cat; echo "@reboot sudo /home/pi/little-backup-box/camera-backup.sh"; } | crontab + crontab -l | { cat; echo "#@reboot sudo /home/pi/little-backup-box/rc.py"; } | crontab ;; 3) - crontab -l | { cat; echo "#@reboot sudo /home/pi/little-backup-box/backup.sh"; } | crontab - crontab -l | { cat; echo "#@reboot sudo /home/pi/little-backup-box/gphoto-backup.sh"; } | crontab - crontab -l | { cat; echo "@reboot sudo /home/pi/little-backup-box/webui.py"; } | crontab + crontab -l | { cat; echo "#@reboot sudo /home/pi/little-backup-box/card-backup.sh"; } | crontab + crontab -l | { cat; echo "#@reboot sudo /home/pi/little-backup-box/camera-backup.sh"; } | crontab + crontab -l | { cat; echo "@reboot sudo /home/pi/little-backup-box/rc.py"; } | crontab ;; esac diff --git a/installer.png b/installer.png index c940443de8114b218597b935ca9f7fd0da0fa8ef..978825609b1993468136b0d3bb647db54a801276 100644 GIT binary patch literal 16740 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 &ll890 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 diff --git a/webui.png b/rc.png similarity index 100% rename from webui.png rename to rc.png diff --git a/webui.py b/rc.py similarity index 93% rename from webui.py rename to rc.py index 7b2b1bb..7c7152c 100755 --- a/webui.py +++ b/rc.py @@ -18,11 +18,11 @@ import os @route('/') @route('/', method='POST') -def control(): +def remote_control(): if (request.POST.get("cardbackup")): - os.system("sudo /home/pi/little-backup-box/backup.sh") + os.system("sudo /home/pi/little-backup-box/card-backup.sh") if (request.POST.get("camerabackup")): - os.system("sudo /home/pi/little-backup-box/gphoto-backup.sh") + os.system("sudo /home/pi/little-backup-box/camera-backup.sh") if (request.POST.get("shutdown")): os.system("sudo shutdown -h now") return """