|
@@ -202,6 +202,9 @@ BACKUP_SCRIPT_NAME="backup"
|
202
|
202
|
# name of a script used to backup to friends servers
|
203
|
203
|
BACKUP_TO_FRIENDS_SCRIPT_NAME="backup2friends"
|
204
|
204
|
|
|
205
|
+# name of a script used to restore backed up data from a friend
|
|
206
|
+RESTORE_FROM_FRIEND_SCRIPT_NAME="restorefromfriend"
|
|
207
|
+
|
205
|
208
|
# passphrase used for automatic backups to friends servers
|
206
|
209
|
# this will be automatically generated
|
207
|
210
|
BACKUP_TO_FRIENDS_PASSPHRASE=
|
|
@@ -470,7 +473,7 @@ function create_backup_script {
|
470
|
473
|
echo " rm -rf /home/$MY_USERNAME/tempfiles" >> /usr/bin/$BACKUP_SCRIPT_NAME
|
471
|
474
|
echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
|
472
|
475
|
echo 'sync' >> /usr/bin/$BACKUP_SCRIPT_NAME
|
473
|
|
- echo 'umount $USB_MOUNT' >> /usr/bin/$BACKUP_SCRIPT_NAME
|
|
476
|
+ echo "umount $USB_MOUNT" >> /usr/bin/$BACKUP_SCRIPT_NAME
|
474
|
477
|
echo 'echo "Backup to USB drive is complete. You can now unplug it."' >> /usr/bin/$BACKUP_SCRIPT_NAME
|
475
|
478
|
echo 'exit 0' >> /usr/bin/$BACKUP_SCRIPT_NAME
|
476
|
479
|
|
|
@@ -523,14 +526,14 @@ function create_restore_script {
|
523
|
526
|
echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
|
524
|
527
|
|
525
|
528
|
echo "if [ -d /home/$MY_USERNAME/tempfiles ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
|
526
|
|
- echo ' rm -rf /home/$MY_USERNAME/tempfiles/*' >> /usr/bin/$RESTORE_SCRIPT_NAME
|
|
529
|
+ echo " rm -rf /home/$MY_USERNAME/tempfiles/*" >> /usr/bin/$RESTORE_SCRIPT_NAME
|
527
|
530
|
echo 'else' >> /usr/bin/$RESTORE_SCRIPT_NAME
|
528
|
|
- echo ' mkdir /home/$MY_USERNAME/tempfiles' >> /usr/bin/$RESTORE_SCRIPT_NAME
|
|
531
|
+ echo " mkdir /home/$MY_USERNAME/tempfiles" >> /usr/bin/$RESTORE_SCRIPT_NAME
|
529
|
532
|
echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
|
530
|
533
|
echo 'echo "Restoring web content and miscellaneous files"' >> /usr/bin/$RESTORE_SCRIPT_NAME
|
531
|
534
|
echo "duplicity --force file://$USB_MOUNT/backup/tempfiles /home/$MY_USERNAME/tempfiles" >> /usr/bin/$RESTORE_SCRIPT_NAME
|
532
|
|
- echo 'tar -xzvf /home/$MY_USERNAME/tempfiles/miscfiles.tar.gz -C /' >> /usr/bin/$RESTORE_SCRIPT_NAME
|
533
|
|
- echo 'rm -rf /home/$MY_USERNAME/tempfiles' >> /usr/bin/$RESTORE_SCRIPT_NAME
|
|
535
|
+ echo "tar -xzvf /home/$MY_USERNAME/tempfiles/miscfiles.tar.gz -C /" >> /usr/bin/$RESTORE_SCRIPT_NAME
|
|
536
|
+ echo "rm -rf /home/$MY_USERNAME/tempfiles" >> /usr/bin/$RESTORE_SCRIPT_NAME
|
534
|
537
|
|
535
|
538
|
echo "if [ -d /home/$MY_USERNAME/Maildir ]; then" >> /usr/bin/$RESTORE_SCRIPT_NAME
|
536
|
539
|
echo ' echo "Restoring emails"' >> /usr/bin/$RESTORE_SCRIPT_NAME
|
|
@@ -543,7 +546,7 @@ function create_restore_script {
|
543
|
546
|
echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
|
544
|
547
|
|
545
|
548
|
echo 'sync' >> /usr/bin/$RESTORE_SCRIPT_NAME
|
546
|
|
- echo 'umount $USB_MOUNT' >> /usr/bin/$RESTORE_SCRIPT_NAME
|
|
549
|
+ echo "umount $USB_MOUNT" >> /usr/bin/$RESTORE_SCRIPT_NAME
|
547
|
550
|
echo 'echo "Restore from USB drive is complete. You can now remove it."' >> /usr/bin/$RESTORE_SCRIPT_NAME
|
548
|
551
|
echo 'exit 0' >> /usr/bin/$RESTORE_SCRIPT_NAME
|
549
|
552
|
|
|
@@ -702,6 +705,78 @@ function backup_to_friends_servers {
|
702
|
705
|
echo 'backup_to_friends_servers' >> $COMPLETION_FILE
|
703
|
706
|
}
|
704
|
707
|
|
|
708
|
+function restore_from_friend {
|
|
709
|
+ if grep -Fxq "restore_from_friend" $COMPLETION_FILE; then
|
|
710
|
+ return
|
|
711
|
+ fi
|
|
712
|
+
|
|
713
|
+ if [ ! $BACKUP_TO_FRIENDS_PASSPHRASE ]; then
|
|
714
|
+ BACKUP_TO_FRIENDS_PASSPHRASE=$(openssl rand -base64 32)
|
|
715
|
+ fi
|
|
716
|
+
|
|
717
|
+ echo '#!/bin/bash' > /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
718
|
+ echo 'SERVER_NAME=$1' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
719
|
+ echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
720
|
+ echo "PASSPHRASE='$BACKUP_TO_FRIENDS_PASSPHRASE'" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
721
|
+ echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
722
|
+ echo 'if [ ! $SERVER_NAME ]; then' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
723
|
+ echo " echo '$RESTORE_FROM_FRIEND_SCRIPT_NAME [server]'" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
724
|
+ echo ' exit 1' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
725
|
+ echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
726
|
+ echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
727
|
+ echo "if [ ! -f $FRIENDS_SERVERS_LIST ]; then" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
728
|
+ echo " echo 'No friends list found at $FRIENDS_SERVERS_LIST'" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
729
|
+ echo ' exit 2' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
730
|
+ echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
731
|
+ echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
732
|
+ echo -n 'if ! grep -q "$SERVER_NAME" ' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
733
|
+ echo "$FRIENDS_SERVERS_LIST; then" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
734
|
+ echo ' echo "Server not found within the friends list"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
735
|
+ echo ' exit 3' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
736
|
+ echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
737
|
+ echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
738
|
+ echo -n 'SERVER=$(grep -i "$SERVER_NAME" ' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
739
|
+ echo "$FRIENDS_SERVERS_LIST | awk -F ' ' '{print $1}')" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
740
|
+ echo -n 'FTP_PASSWORD=$(grep -i "$SERVER_NAME" ' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
741
|
+ echo "$FRIENDS_SERVERS_LIST | awk -F ' ' '{print $2}')" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
742
|
+ echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
743
|
+
|
|
744
|
+ echo "if [ -d $PUBLIC_MAILING_LIST_DIRECTORY ]; then" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
745
|
+ echo ' echo "Restoring public mailing list"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
746
|
+ echo " duplicity --force $SERVER/publicmailinglist $PUBLIC_MAILING_LIST_DIRECTORY" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
747
|
+ echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
748
|
+
|
|
749
|
+ echo "if [ -d $XMPP_DIRECTORY ]; then" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
750
|
+ echo ' echo "Restoring XMPP settings"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
751
|
+ echo " duplicity --force $SERVER/xmpp $XMPP_DIRECTORY" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
752
|
+ echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
753
|
+
|
|
754
|
+ echo "if [ -d /home/$MY_USERNAME/tempfiles ]; then" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
755
|
+ echo " rm -rf /home/$MY_USERNAME/tempfiles/*" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
756
|
+ echo 'else' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
757
|
+ echo " mkdir /home/$MY_USERNAME/tempfiles" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
758
|
+ echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
759
|
+ echo 'echo "Restoring web content and miscellaneous files"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
760
|
+ echo "duplicity --force $SERVER/tempfiles /home/$MY_USERNAME/tempfiles" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
761
|
+ echo "tar -xzvf /home/$MY_USERNAME/tempfiles/miscfiles.tar.gz -C /" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
762
|
+ echo "rm -rf /home/$MY_USERNAME/tempfiles" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
763
|
+
|
|
764
|
+ echo "if [ -d /home/$MY_USERNAME/Maildir ]; then" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
765
|
+ echo ' echo "Restoring emails"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
766
|
+ echo " duplicity --force $SERVER/Maildir /home/$MY_USERNAME/Maildir" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
767
|
+ echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
768
|
+
|
|
769
|
+ echo "if [ -d /var/cache/minidlna ]; then" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
770
|
+ echo ' echo "Restoring DLNA cache"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
771
|
+ echo " duplicity --force $SERVER/dlna /var/cache/minidlna" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
772
|
+ echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
773
|
+
|
|
774
|
+ echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
775
|
+ echo 'exit 0' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
|
|
776
|
+
|
|
777
|
+ echo 'restore_from_friend' >> $COMPLETION_FILE
|
|
778
|
+}
|
|
779
|
+
|
705
|
780
|
function remove_default_user {
|
706
|
781
|
# make sure you don't use the default user account
|
707
|
782
|
if [[ $MY_USERNAME == "debian" ]]; then
|
|
@@ -3925,6 +4000,7 @@ install_mediagoblin
|
3925
|
4000
|
create_backup_script
|
3926
|
4001
|
create_restore_script
|
3927
|
4002
|
backup_to_friends_servers
|
|
4003
|
+restore_from_friend
|
3928
|
4004
|
install_final
|
3929
|
4005
|
apt-get -y --force-yes autoremove
|
3930
|
4006
|
echo 'Freedombone installation is complete'
|