├── LidarrBackup-config ├── RadarrBackup-config ├── SonarrBackup-config ├── SabnzbdBackup-config ├── TautulliBackup-config ├── LazylibrarianBackup-config ├── WordpressBackup-config ├── allbackup.sh ├── README.md ├── sabnzbdbackup.sh ├── lidarrbackup.sh ├── radarrbackup.sh ├── sonarrbackup.sh ├── lazylibrarianbackup.sh ├── tautullibackup.sh └── wpBackup.sh /LidarrBackup-config: -------------------------------------------------------------------------------- 1 | cron="" 2 | LIDARR_JAIL_NAME="lidarr" 3 | POOL_PATH="/mnt/v1" 4 | APPS_PATH="apps" 5 | LIDARR_SOURCE="lidarr" 6 | LIDARR_DESTINATION="lidarr" 7 | BACKUP_PATH="backup" 8 | BACKUP_NAME="lidarrbackup.tar.gz" 9 | 10 | -------------------------------------------------------------------------------- /RadarrBackup-config: -------------------------------------------------------------------------------- 1 | cron="" 2 | RADARR_JAIL_NAME="radarr" 3 | POOL_PATH="/mnt/v1" 4 | APPS_PATH="apps" 5 | RADARR_SOURCE="radarr" 6 | RADARR_DESTINATION="radarr" 7 | BACKUP_PATH="backup" 8 | BACKUP_NAME="radarrbackup.tar.gz" 9 | 10 | -------------------------------------------------------------------------------- /SonarrBackup-config: -------------------------------------------------------------------------------- 1 | cron="" 2 | SONARR_JAIL_NAME="sonarr" 3 | POOL_PATH="/mnt/v1" 4 | APPS_PATH="apps" 5 | SONARR_SOURCE="sonarr" 6 | SONARR_DESTINATION="sonarr" 7 | BACKUP_PATH="backup" 8 | BACKUP_NAME="sonarrbackup.tar.gz" 9 | 10 | -------------------------------------------------------------------------------- /SabnzbdBackup-config: -------------------------------------------------------------------------------- 1 | cron="" 2 | SABNZBD_JAIL_NAME="sabnzbd2" 3 | POOL_PATH="/mnt/v1" 4 | APPS_PATH="apps" 5 | SABNZBD_SOURCE="sabnzbd" 6 | SABNZBD_DESTINATION="sabnzbd" 7 | BACKUP_PATH="backup" 8 | BACKUP_NAME="sabnzbdbackup.tar.gz" 9 | 10 | -------------------------------------------------------------------------------- /TautulliBackup-config: -------------------------------------------------------------------------------- 1 | cron="" 2 | TAUTULLI_JAIL_NAME="tautulli" 3 | POOL_PATH="/mnt/v1" 4 | APPS_PATH="apps" 5 | TAUTULLI_SOURCE="tautulli" 6 | TAUTULLI_DESTINATION="tautulli" 7 | BACKUP_PATH="backup" 8 | BACKUP_NAME="tautullibackup.tar.gz" 9 | 10 | -------------------------------------------------------------------------------- /LazylibrarianBackup-config: -------------------------------------------------------------------------------- 1 | cron="" 2 | LAZYLIBRARIAN_JAIL_NAME="lazylibrarian" 3 | POOL_PATH="/mnt/v1" 4 | APPS_PATH="apps" 5 | LAZYLIBRARIAN_SOURCE="lazylibrarian" 6 | LAZYLIBRARIAN_DESTINATION="lazylibrarian" 7 | BACKUP_PATH="backup" 8 | BACKUP_NAME="lazylibrarianbackup.tar.gz" 9 | 10 | -------------------------------------------------------------------------------- /WordpressBackup-config: -------------------------------------------------------------------------------- 1 | cron="" 2 | POOL_PATH="/mnt/v1" 3 | APPS_PATH="apps" 4 | CONFIG_PATH="config" 5 | JAIL_NAME="wordpress" 6 | WP_SOURCE="wordpress" 7 | WP_DESTINATION="wpbackup" 8 | BACKUP_PATH="backup" 9 | BACKUP_NAME="wpbackup.tar.gz" 10 | DATABASE_NAME="wordpress" 11 | DB_BACKUP_NAME="wordpress.sql" 12 | DB_PASSWORD="yourdatabasepassword" 13 | 14 | -------------------------------------------------------------------------------- /allbackup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # run all 7 backup programs, set cron="yes" for each config to automate backup 3 | /git/freenas-backup-apps/sonarrbackup.sh 4 | /git/freenas-backup-apps/radarrbackup.sh 5 | /git/freenas-backup-apps/lidarrbackup.sh 6 | /git/freenas-backup-apps/sabnzbdbackup.sh 7 | /git/freenas-backup-apps/tautullibackup.sh 8 | /git/freenas-backup-apps/wpBackup.sh 9 | /git/freenas-backup-apps/lazylibrarianbackup.sh 10 | echo "Done" 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # freenas-backup-apps 2 | 3 | ### Use freenas-backup-appsdir instead. Only one config and does all the jail apps. 4 | 5 | ## Clone git repository 6 | 7 | ``` 8 | git clone https://github.com/NasKar2/backupapps-freenas-iocage.git 9 | ``` 10 | 11 | to prevent edits to the config files from being changed with a git pull 12 | 13 | ``` 14 | git update-index --skip-worktree *-config 15 | ``` 16 | 17 | ## Backup and Restore Freenas Apps Data 18 | 19 | Script to help backup and restore the Sonarr, Radarr, Lidarr, Sabnzbd, Wordpress and Tautulli data directory 20 | 21 | ### Prerequisites 22 | 23 | Edit each config file with your setup. The config files will download when you do your git clone but any changes to the config files will not be overwritten when you do a 'git pull' to update to the latest version of the script. For example SonarrBackup-config 24 | 25 | The cron variable allows you to backup without asking for user input if set to cron="yes" 26 | 27 | The APPS_PATH is the directory in our pool to put the sonarr data. In our example that would be /mnt/v1/apps/ 28 | 29 | The SONARR_SOURCE is the name of the sonarr data directory that is the source of the backup. In our example /mnt/v1/apps/sonarr/ 30 | 31 | The SONARR_DESTINATION is the name of the sonarr data directory that is the destination of the backup data. In our example /mnt/v1/apps/sonarr/ 32 | 33 | The BACKUP_PATH is the location in the pool for the backup file. In our example /mnt/v1/apps/ 34 | 35 | THE BACKUP_NAME is the name of the backup file 36 | 37 | ``` 38 | cron="" 39 | SONARR_JAIL_NAME="sonarr" 40 | POOL_PATH="/mnt/v1" 41 | APPS_PATH="apps" 42 | SONARR_SOURCE="sonarr" 43 | SONARR_DESTINATION="sonarr" 44 | BACKUP_PATH="backup" 45 | BACKUP_NAME="sonarrbackup.tar.gz" 46 | ``` 47 | Edit file called RadarrBackup-config 48 | 49 | Edit file called LidarrBackup-config 50 | 51 | Edit file called SabnzbdBackup-config 52 | 53 | Edit file called TautulliBackup-config 54 | 55 | Edit file called WordpressBackup-config. Change yourdatabasepassword to the mariadb password and set the file permission to 400. 56 | 57 | ``` 58 | chmod 400 WordpressBackup-config 59 | ``` 60 | 61 | ## Install 62 | 63 | ``` 64 | ./sonarrbackup.sh 65 | ./radarrbackup.sh 66 | ./lidarrbackup.sh 67 | ./sabnzbdbackup.sh 68 | ./tautullibackup.sh 69 | ./wpBackup.sh 70 | ``` 71 | ## To run all in a cronjob 72 | 73 | set cron="yes" in all the config files 74 | 75 | ``` 76 | ./allbackup.sh 77 | ``` 78 | -------------------------------------------------------------------------------- /sabnzbdbackup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #backup and restore Sabnzbd data 3 | 4 | # Check for root privileges 5 | if ! [ $(id -u) = 0 ]; then 6 | echo "This script must be run with root privileges" 7 | exit 1 8 | fi 9 | 10 | # Initialize defaults 11 | cron="" 12 | SABNZBD_JAIL_NAME="" 13 | POOL_PATH="" 14 | APPS_PATH="" 15 | SABNZBD_SOURCE="" 16 | SABNZBD_DESTINATION="" 17 | BACKUP_PATH="" 18 | BACKUP_NAME="" 19 | 20 | SCRIPT=$(readlink -f "$0") 21 | SCRIPTPATH=$(dirname "$SCRIPT") 22 | . $SCRIPTPATH/SabnzbdBackup-config 23 | CONFIGS_PATH=$SCRIPTPATH/configs 24 | 25 | # Check for SabnzbdBackup-config and set configuration 26 | if ! [ -e $SCRIPTPATH/SabnzbdBackup-config ]; then 27 | echo "$SCRIPTPATH/SabnzbdBackup-config must exist." 28 | exit 1 29 | fi 30 | 31 | # Check that necessary variables were set by SabnzbdBackup-config 32 | if [ -z $POOL_PATH ]; then 33 | echo 'Configuration error: POOL_PATH must be set' 34 | exit 1 35 | fi 36 | 37 | if [ -z $SABNZBD_JAIL_NAME ]; then 38 | echo 'Configuration error: SABNZBD_JAIL_NAME must be set' 39 | exit 1 40 | fi 41 | 42 | 43 | if [ -z $APPS_PATH ]; then 44 | echo 'Configuration error: APPS_PATH must be set' 45 | exit 1 46 | fi 47 | if [ -z $SABNZBD_SOURCE ]; then 48 | echo 'Configuration error: SABNZBD_SOURCE must be set' 49 | exit 1 50 | fi 51 | if [ -z $SABNZBD_DESTINATION ]; then 52 | echo 'Configuration error: SABNZBD_DESTINATION must be set' 53 | exit 1 54 | fi 55 | if [ -z $BACKUP_PATH ]; then 56 | echo 'Configuration error: BACKUP_PATH must be set' 57 | exit 1 58 | fi 59 | if [ -z $BACKUP_NAME ]; then 60 | echo 'Configuration error: BACKUP_NAME must be set' 61 | exit 1 62 | fi 63 | if [ ! -d "${POOL_PATH}/${APPS_PATH}/${SABNZBD_SOURCE}" ]; then 64 | echo 65 | echo "You made a SabnzbdBackup-config error the SABNZBD_SOURCE directory ${POOL_PATH}/${APPS_PATH}/${SABNZBD_SOURCE} does not exist" 66 | mkdir -p ${POOL_PATH}/${APPS_PATH}/${SABNZBD_SOURCE} 67 | chown -R media:media ${POOL_PATH}/${APPS_PATH}/${SABNZBD_SOURCE} 68 | echo 69 | echo "The SABNZBD_SOURCE directory ${POOL_PATH}/${APPS_PATH}/${SABNZBD_SOURCE} has been created for you" 70 | echo 71 | echo "Please run the script again to use that directory or edit the SabnzbdBackup-config" 72 | exit 1 73 | fi 74 | 75 | if [ ${POOL_PATH} == "/" ]; then 76 | POOL_PATH="" 77 | fi 78 | 79 | echo $POOL_PATH 80 | #cron="yes" 81 | #SABNZBD_JAIL_NAME="sabnzbd" 82 | #POOL_PATH="/mnt/v1" 83 | #APPS_PATH="apps" 84 | #SABNZBD_SOURCE="sabnzbd" 85 | #SABNZBD_DESTINATION="sabnzbd" 86 | #BACKUP_PATH="apps" 87 | #BACKUP_NAME="sabnzbdbackup.tar.gz" 88 | 89 | if [ "$cron" != "yes" ]; then 90 | read -p "Enter '(B)ackup' to backup Sabnzbd or '(R)estore' to restore Sabnzbd: " choice 91 | fi 92 | echo 93 | 94 | if [ "${cron}" == "yes" ]; then 95 | choice="B" 96 | fi 97 | 98 | echo 99 | if [ ${choice} == "B" ] || [ ${choice} == "b" ]; then 100 | if [ ! -d "${POOL_PATH}/${BACKUP_PATH}" ]; then 101 | mkdir -p ${POOL_PATH}/${BACKUP_PATH} 102 | echo "mkdir -p ${POOL_PATH}/${BACKUP_PATH}" 103 | fi 104 | # to backup 105 | # iocage exec ${SABNZBD_JAIL_NAME} service sabnzbd stop 106 | cd ${POOL_PATH}/${APPS_PATH}/${SABNZBD_SOURCE} 107 | echo 108 | echo "cd ${POOL_PATH}/${APPS_PATH}/${SABNZBD_SOURCE}" 109 | tar -zcpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} ./* 110 | 111 | echo 112 | echo "tar -zcpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} ./*" 113 | echo 114 | echo "Backup complete file located at ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME}" 115 | echo 116 | # iocage exec ${SABNZBD_JAIL_NAME} service sabnzbd start 117 | elif [ $choice == "R" ] || [ $choice == "r" ]; then 118 | # to restore sabnzbdbackup to directory 119 | if [ ! -d "${POOL_PATH}/${APPS_PATH}/${SABNZBD_DESTINATION}" ]; then 120 | mkdir -p ${POOL_PATH}/${APPS_PATH}/${SABNZBD_DESTINATION} 121 | echo 122 | echo "mkdir -p ${POOL_PATH}/${APPS_PATH}/${SABNZBD_DESTINATION}" 123 | echo 124 | chowm -R media:media ${POOL_PATH}/${APPS_PATH}/${SABNZBD_DESTINATION} 125 | echo "chown -R media:media ${POOL_PATH}/${APPS_PATH}/${SABNZBD_DESTINATION}" 126 | fi 127 | iocage exec ${SABNZBD_JAIL_NAME} service sabnzbd stop 128 | tar zvxpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} -C ${POOL_PATH}/${APPS_PATH}/${SABNZBD_DESTINATION} 129 | echo 130 | echo "tar xpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} -C ${POOL_PATH}/${APPS_PATH}/${SABNZBD_DESTINATION}" 131 | echo 132 | echo "Restore completed at ${POOL_PATH}/${APPS_PATH}/${SABNZBD_DESTINATION}" 133 | echo 134 | iocage exec ${SABNZBD_JAIL_NAME} service sabnzbd start 135 | iocage restart ${SABNZBD_JAIL_NAME} 136 | else 137 | echo 138 | echo "Must enter '(B)ackup' to backup Sabnzbd or '(R)estore' to restore Sabnzbd: " 139 | echo 140 | fi 141 | 142 | -------------------------------------------------------------------------------- /lidarrbackup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #backup and restore Lidarr data 3 | 4 | # Check for root privileges 5 | if ! [ $(id -u) = 0 ]; then 6 | echo "This script must be run with root privileges" 7 | exit 1 8 | fi 9 | 10 | # Initialize defaults 11 | cron="" 12 | LIDARR_JAIL_NAME="" 13 | POOL_PATH="" 14 | APPS_PATH="" 15 | LIDARR_SOURCE="" 16 | LIDARR_DESTINATION="" 17 | BACKUP_PATH="" 18 | BACKUP_NAME="" 19 | 20 | SCRIPT=$(readlink -f "$0") 21 | SCRIPTPATH=$(dirname "$SCRIPT") 22 | . $SCRIPTPATH/LidarrBackup-config 23 | CONFIGS_PATH=$SCRIPTPATH/configs 24 | 25 | # Check for LidarrBackup-config and set configuration 26 | if ! [ -e $SCRIPTPATH/LidarrBackup-config ]; then 27 | echo "$SCRIPTPATH/LidarrBackup-config must exist." 28 | exit 1 29 | fi 30 | 31 | # Check that necessary variables were set by LidarrBackup-config 32 | if [ -z $POOL_PATH ]; then 33 | echo 'Configuration error: POOL_PATH must be set' 34 | exit 1 35 | fi 36 | 37 | if [ -z $LIDARR_JAIL_NAME ]; then 38 | echo 'Configuration error: LIDARR_JAIL_NAME must be set' 39 | exit 1 40 | fi 41 | 42 | 43 | if [ -z $APPS_PATH ]; then 44 | echo 'Configuration error: APPS_PATH must be set' 45 | exit 1 46 | fi 47 | if [ -z $LIDARR_SOURCE ]; then 48 | echo 'Configuration error: LIDARR_SOURCE must be set' 49 | exit 1 50 | fi 51 | if [ -z $LIDARR_DESTINATION ]; then 52 | echo 'Configuration error: LIDARR_DESTINATION must be set' 53 | exit 1 54 | fi 55 | if [ -z $BACKUP_PATH ]; then 56 | echo 'Configuration error: BACKUP_PATH must be set' 57 | exit 1 58 | fi 59 | if [ -z $BACKUP_NAME ]; then 60 | echo 'Configuration error: BACKUP_NAME must be set' 61 | exit 1 62 | fi 63 | if [ ! -d "${POOL_PATH}/${APPS_PATH}/${LIDARR_SOURCE}" ]; then 64 | echo 65 | echo "You made a LidarrBackup-config error the LIDARR_SOURCE directory ${POOL_PATH}/${APPS_PATH}/${LIDARR_SOURCE} does not exist" 66 | mkdir -p ${POOL_PATH}/${APPS_PATH}/${LIDARR_SOURCE} 67 | chown -R media:media ${POOL_PATH}/${APPS_PATH}/${LIDARR_SOURCE} 68 | echo 69 | echo "The LIDARR_SOURCE directory ${POOL_PATH}/${APPS_PATH}/${LIDARR_SOURCE} has been created for you" 70 | echo 71 | echo "Please run the script again to use that directory or edit the LidarrBackup-config" 72 | exit 1 73 | fi 74 | 75 | if [ ${POOL_PATH} == "/" ]; then 76 | POOL_PATH="" 77 | fi 78 | 79 | echo $POOL_PATH 80 | #cron="yes" 81 | #LIDARR_JAIL_NAME="lidarr" 82 | #POOL_PATH="/mnt/v1" 83 | #APPS_PATH="apps" 84 | #LIDARR_SOURCE="lidarr" 85 | #LIDARR_DESTINATION="lidarr" 86 | #BACKUP_PATH="apps" 87 | #BACKUP_NAME="lidarrbackup.tar.gz" 88 | 89 | if [ "$cron" != "yes" ]; then 90 | read -p "Enter '(B)ackup' to backup Lidarr or '(R)estore' to restore Lidarr: " choice 91 | fi 92 | echo 93 | 94 | if [ "${cron}" == "yes" ]; then 95 | choice="B" 96 | fi 97 | 98 | echo 99 | if [ ${choice} == "B" ] || [ ${choice} == "b" ]; then 100 | if [ ! -d "${POOL_PATH}/${BACKUP_PATH}" ]; then 101 | mkdir -p ${POOL_PATH}/${BACKUP_PATH} 102 | echo "mkdir -p ${POOL_PATH}/${BACKUP_PATH}" 103 | fi 104 | # to backup 105 | #tar --exclude=./*.db-* -zcvf /mnt/v1/apps/lidarrbackup.tar.gz ./ 106 | iocage exec ${LIDARR_JAIL_NAME} service lidarr stop 107 | cd ${POOL_PATH}/${APPS_PATH}/${LIDARR_SOURCE} 108 | echo 109 | echo "cd ${POOL_PATH}/${APPS_PATH}/${LIDARR_SOURCE}" 110 | tar --exclude='./lidarr.db-*' --exclude='lidarr.pid' -zcpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} ./* 111 | 112 | echo 113 | echo "tar --exclude='./lidarr.db-*' --exclude='lidarr.pid' -zcpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} ./*" 114 | echo 115 | echo "Backup complete file located at ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME}" 116 | echo 117 | iocage exec ${LIDARR_JAIL_NAME} service lidarr start 118 | elif [ $choice == "R" ] || [ $choice == "r" ]; then 119 | # to restore lidarrbackup to directory plexpass2 120 | if [ ! -d "${POOL_PATH}/${APPS_PATH}/${LIDARR_DESTINATION}" ]; then 121 | mkdir -p ${POOL_PATH}/${APPS_PATH}/${LIDARR_DESTINATION} 122 | echo 123 | echo "mkdir -p ${POOL_PATH}/${APPS_PATH}/${LIDARR_DESTINATION}" 124 | echo 125 | chowm -R media:media ${POOL_PATH}/${APPS_PATH}/${LIDARR_DESTINATION} 126 | echo "chown -R media:media ${POOL_PATH}/${APPS_PATH}/${LIDARR_DESTINATION}" 127 | fi 128 | #tar xf lidarrbackup.tar.gz -C /mnt/v1/apps/plexpass2/ 129 | iocage exec ${LIDARR_JAIL_NAME} service lidarr stop 130 | tar zvxpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} -C ${POOL_PATH}/${APPS_PATH}/${LIDARR_DESTINATION} 131 | echo 132 | echo "tar xpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} -C ${POOL_PATH}/${APPS_PATH}/${LIDARR_DESTINATION}" 133 | echo 134 | echo "Restore completed at ${POOL_PATH}/${APPS_PATH}/${LIDARR_DESTINATION}" 135 | echo 136 | iocage exec ${LIDARR_JAIL_NAME} service lidarr start 137 | iocage restart ${LIDARR_JAIL_NAME} 138 | else 139 | echo 140 | echo "Must enter '(B)ackup' to backup Lidarr or '(R)estore' to restore Lidarr: " 141 | echo 142 | fi 143 | 144 | -------------------------------------------------------------------------------- /radarrbackup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #backup and restore Radarr data 3 | 4 | # Check for root privileges 5 | if ! [ $(id -u) = 0 ]; then 6 | echo "This script must be run with root privileges" 7 | exit 1 8 | fi 9 | 10 | # Initialize defaults 11 | cron="" 12 | RADARR_JAIL_NAME="" 13 | POOL_PATH="" 14 | APPS_PATH="" 15 | RADARR_SOURCE="" 16 | RADARR_DESTINATION="" 17 | BACKUP_PATH="" 18 | BACKUP_NAME="" 19 | 20 | SCRIPT=$(readlink -f "$0") 21 | SCRIPTPATH=$(dirname "$SCRIPT") 22 | . $SCRIPTPATH/RadarrBackup-config 23 | CONFIGS_PATH=$SCRIPTPATH/configs 24 | 25 | # Check for RadarrBackup-config and set configuration 26 | if ! [ -e $SCRIPTPATH/RadarrBackup-config ]; then 27 | echo "$SCRIPTPATH/RadarrBackup-config must exist." 28 | exit 1 29 | fi 30 | 31 | # Check that necessary variables were set by RadarrBackup-config 32 | if [ -z $POOL_PATH ]; then 33 | echo 'Configuration error: POOL_PATH must be set' 34 | exit 1 35 | fi 36 | 37 | if [ -z $RADARR_JAIL_NAME ]; then 38 | echo 'Configuration error: RADARR_JAIL_NAME must be set' 39 | exit 1 40 | fi 41 | 42 | 43 | if [ -z $APPS_PATH ]; then 44 | echo 'Configuration error: APPS_PATH must be set' 45 | exit 1 46 | fi 47 | if [ -z $RADARR_SOURCE ]; then 48 | echo 'Configuration error: RADARR_SOURCE must be set' 49 | exit 1 50 | fi 51 | if [ -z $RADARR_DESTINATION ]; then 52 | echo 'Configuration error: RADARR_DESTINATION must be set' 53 | exit 1 54 | fi 55 | if [ -z $BACKUP_PATH ]; then 56 | echo 'Configuration error: BACKUP_PATH must be set' 57 | exit 1 58 | fi 59 | if [ -z $BACKUP_NAME ]; then 60 | echo 'Configuration error: BACKUP_NAME must be set' 61 | exit 1 62 | fi 63 | if [ ! -d "${POOL_PATH}/${APPS_PATH}/${RADARR_SOURCE}" ]; then 64 | echo 65 | echo "You made a RadarrBackup-config error the RADARR_SOURCE directory ${POOL_PATH}/${APPS_PATH}/${RADARR_SOURCE} does not exist" 66 | mkdir -p ${POOL_PATH}/${APPS_PATH}/${RADARR_SOURCE} 67 | chown -R media:media ${POOL_PATH}/${APPS_PATH}/${RADARR_SOURCE} 68 | echo 69 | echo "The RADARR_SOURCE directory ${POOL_PATH}/${APPS_PATH}/${RADARR_SOURCE} has been created for you" 70 | echo 71 | echo "Please run the script again to use that directory or edit the RadarrBackup-config" 72 | exit 1 73 | fi 74 | 75 | if [ ${POOL_PATH} == "/" ]; then 76 | POOL_PATH="" 77 | fi 78 | 79 | echo $POOL_PATH 80 | #cron="yes" 81 | #RADARR_JAIL_NAME="radarr" 82 | #POOL_PATH="/mnt/v1" 83 | #APPS_PATH="apps" 84 | #RADARR_SOURCE="radarr" 85 | #RADARR_DESTINATION="radarr" 86 | #BACKUP_PATH="apps" 87 | #BACKUP_NAME="radarrbackup.tar.gz" 88 | 89 | if [ "$cron" != "yes" ]; then 90 | read -p "Enter '(B)ackup' to backup Radarr or '(R)estore' to restore Radarr: " choice 91 | fi 92 | echo 93 | 94 | if [ "${cron}" == "yes" ]; then 95 | choice="B" 96 | fi 97 | 98 | echo 99 | if [ ${choice} == "B" ] || [ ${choice} == "b" ]; then 100 | if [ ! -d "${POOL_PATH}/${BACKUP_PATH}" ]; then 101 | mkdir -p ${POOL_PATH}/${BACKUP_PATH} 102 | echo "mkdir -p ${POOL_PATH}/${BACKUP_PATH}" 103 | fi 104 | # to backup 105 | #tar --exclude=./*.db-* -zcvf /mnt/v1/apps/radarrbackup.tar.gz ./ 106 | iocage exec ${RADARR_JAIL_NAME} service radarr stop 107 | cd ${POOL_PATH}/${APPS_PATH}/${RADARR_SOURCE} 108 | echo 109 | echo "cd ${POOL_PATH}/${APPS_PATH}/${RADARR_SOURCE}" 110 | tar --exclude='./nzbdrone.db-*' --exclude='nzbdrone.pid' -zcpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} ./* 111 | 112 | echo 113 | echo "tar --exclude='./nzbdrone.db-*' --exclude='nzbdrone.pid' -zcpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} ./*" 114 | echo 115 | echo "Backup complete file located at ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME}" 116 | echo 117 | iocage exec ${RADARR_JAIL_NAME} service radarr start 118 | elif [ $choice == "R" ] || [ $choice == "r" ]; then 119 | # to restore radarrbackup to directory plexpass2 120 | if [ ! -d "${POOL_PATH}/${APPS_PATH}/${RADARR_DESTINATION}" ]; then 121 | mkdir -p ${POOL_PATH}/${APPS_PATH}/${RADARR_DESTINATION} 122 | echo 123 | echo "mkdir -p ${POOL_PATH}/${APPS_PATH}/${RADARR_DESTINATION}" 124 | echo 125 | chowm -R media:media ${POOL_PATH}/${APPS_PATH}/${RADARR_DESTINATION} 126 | echo "chown -R media:media ${POOL_PATH}/${APPS_PATH}/${RADARR_DESTINATION}" 127 | fi 128 | #tar xf radarrbackup.tar.gz -C /mnt/v1/apps/plexpass2/ 129 | iocage exec ${RADARR_JAIL_NAME} service radarr stop 130 | tar zvxpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} -C ${POOL_PATH}/${APPS_PATH}/${RADARR_DESTINATION} 131 | echo 132 | echo "tar xpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} -C ${POOL_PATH}/${APPS_PATH}/${RADARR_DESTINATION}" 133 | echo 134 | echo "Restore completed at ${POOL_PATH}/${APPS_PATH}/${RADARR_DESTINATION}" 135 | echo 136 | iocage exec ${RADARR_JAIL_NAME} service radarr start 137 | iocage restart ${RADARR_JAIL_NAME} 138 | else 139 | echo 140 | echo "Must enter '(B)ackup' to backup Radarr or '(R)estore' to restore Radarr: " 141 | echo 142 | fi 143 | 144 | -------------------------------------------------------------------------------- /sonarrbackup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #backup and restore Sonarr data 3 | 4 | # Check for root privileges 5 | if ! [ $(id -u) = 0 ]; then 6 | echo "This script must be run with root privileges" 7 | exit 1 8 | fi 9 | 10 | # Initialize defaults 11 | cron="" 12 | SONARR_JAIL_NAME="" 13 | POOL_PATH="" 14 | APPS_PATH="" 15 | SONARR_SOURCE="" 16 | SONARR_DESTINATION="" 17 | BACKUP_PATH="" 18 | BACKUP_NAME="" 19 | 20 | SCRIPT=$(readlink -f "$0") 21 | SCRIPTPATH=$(dirname "$SCRIPT") 22 | . $SCRIPTPATH/SonarrBackup-config 23 | CONFIGS_PATH=$SCRIPTPATH/configs 24 | 25 | # Check for SonarrBackup-config and set configuration 26 | if ! [ -e $SCRIPTPATH/SonarrBackup-config ]; then 27 | echo "$SCRIPTPATH/SonarrBackup-config must exist." 28 | exit 1 29 | fi 30 | 31 | # Check that necessary variables were set by SonarrBackup-config 32 | if [ -z $POOL_PATH ]; then 33 | echo 'Configuration error: POOL_PATH must be set' 34 | exit 1 35 | fi 36 | 37 | if [ -z $SONARR_JAIL_NAME ]; then 38 | echo 'Configuration error: SONARR_JAIL_NAME must be set' 39 | exit 1 40 | fi 41 | 42 | 43 | if [ -z $APPS_PATH ]; then 44 | echo 'Configuration error: APPS_PATH must be set' 45 | exit 1 46 | fi 47 | if [ -z $SONARR_SOURCE ]; then 48 | echo 'Configuration error: SONARR_SOURCE must be set' 49 | exit 1 50 | fi 51 | if [ -z $SONARR_DESTINATION ]; then 52 | echo 'Configuration error: SONARR_DESTINATION must be set' 53 | exit 1 54 | fi 55 | if [ -z $BACKUP_PATH ]; then 56 | echo 'Configuration error: BACKUP_PATH must be set' 57 | exit 1 58 | fi 59 | if [ -z $BACKUP_NAME ]; then 60 | echo 'Configuration error: BACKUP_NAME must be set' 61 | exit 1 62 | fi 63 | if [ ! -d "${POOL_PATH}/${APPS_PATH}/${SONARR_SOURCE}" ]; then 64 | echo 65 | echo "You made a SonarrBackup-config error the SONARR_SOURCE directory ${POOL_PATH}/${APPS_PATH}/${SONARR_SOURCE} does not exist" 66 | mkdir -p ${POOL_PATH}/${APPS_PATH}/${SONARR_SOURCE} 67 | chown -R media:media ${POOL_PATH}/${APPS_PATH}/${SONARR_SOURCE} 68 | echo 69 | echo "The SONARR_SOURCE directory ${POOL_PATH}/${APPS_PATH}/${SONARR_SOURCE} has been created for you" 70 | echo 71 | echo "Please run the script again to use that directory or edit the SonarrBackup-config" 72 | exit 1 73 | fi 74 | 75 | if [ ${POOL_PATH} == "/" ]; then 76 | POOL_PATH="" 77 | fi 78 | 79 | echo $POOL_PATH 80 | #cron="yes" 81 | #SONARR_JAIL_NAME="sonarr" 82 | #POOL_PATH="/mnt/v1" 83 | #APPS_PATH="apps" 84 | #SONARR_SOURCE="sonarr" 85 | #SONARR_DESTINATION="sonarr" 86 | #BACKUP_PATH="apps" 87 | #BACKUP_NAME="sonarrbackup.tar.gz" 88 | 89 | if [ "$cron" != "yes" ]; then 90 | read -p "Enter '(B)ackup' to backup Sonarr or '(R)estore' to restore Sonarr: " choice 91 | fi 92 | echo 93 | 94 | if [ "${cron}" == "yes" ]; then 95 | choice="B" 96 | fi 97 | 98 | echo 99 | if [ ${choice} == "B" ] || [ ${choice} == "b" ]; then 100 | if [ ! -d "${POOL_PATH}/${BACKUP_PATH}" ]; then 101 | mkdir -p ${POOL_PATH}/${BACKUP_PATH} 102 | echo "mkdir -p ${POOL_PATH}/${BACKUP_PATH}" 103 | fi 104 | # to backup 105 | #tar --exclude=./*.db-* -zcvf /mnt/v1/apps/sonarrbackup.tar.gz ./ 106 | iocage exec ${SONARR_JAIL_NAME} service sonarr stop 107 | cd ${POOL_PATH}/${APPS_PATH}/${SONARR_SOURCE} 108 | echo 109 | echo "cd ${POOL_PATH}/${APPS_PATH}/${SONARR_SOURCE}" 110 | tar --exclude='./nzbdrone.db-*' --exclude='nzbdrone.pid' -zcpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} ./* 111 | 112 | echo 113 | echo "tar --exclude='./nzbdrone.db-*' --exclude='nzbdrone.pid' -zcpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} ./*" 114 | echo 115 | echo "Backup complete file located at ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME}" 116 | echo 117 | iocage exec ${SONARR_JAIL_NAME} service sonarr start 118 | elif [ $choice == "R" ] || [ $choice == "r" ]; then 119 | # to restore sonarrbackup to directory plexpass2 120 | if [ ! -d "${POOL_PATH}/${APPS_PATH}/${SONARR_DESTINATION}" ]; then 121 | mkdir -p ${POOL_PATH}/${APPS_PATH}/${SONARR_DESTINATION} 122 | echo 123 | echo "mkdir -p ${POOL_PATH}/${APPS_PATH}/${SONARR_DESTINATION}" 124 | echo 125 | chowm -R media:media ${POOL_PATH}/${APPS_PATH}/${SONARR_DESTINATION} 126 | echo "chown -R media:media ${POOL_PATH}/${APPS_PATH}/${SONARR_DESTINATION}" 127 | fi 128 | #tar xf sonarrbackup.tar.gz -C /mnt/v1/apps/plexpass2/ 129 | iocage exec ${SONARR_JAIL_NAME} service sonarr stop 130 | tar zvxpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} -C ${POOL_PATH}/${APPS_PATH}/${SONARR_DESTINATION} 131 | echo 132 | echo "tar xpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} -C ${POOL_PATH}/${APPS_PATH}/${SONARR_DESTINATION}" 133 | echo 134 | echo "Restore completed at ${POOL_PATH}/${APPS_PATH}/${SONARR_DESTINATION}" 135 | echo 136 | iocage exec ${SONARR_JAIL_NAME} service sonarr start 137 | iocage restart ${SONARR_JAIL_NAME} 138 | else 139 | echo 140 | echo "Must enter '(B)ackup' to backup Sonarr or '(R)estore' to restore Sonarr: " 141 | echo 142 | fi 143 | 144 | -------------------------------------------------------------------------------- /lazylibrarianbackup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #backup and restore Lazy Librarian data 3 | 4 | # Check for root privileges 5 | if ! [ $(id -u) = 0 ]; then 6 | echo "This script must be run with root privileges" 7 | exit 1 8 | fi 9 | 10 | # Initialize defaults 11 | cron="" 12 | LAZYLIBRARIAN_JAIL_NAME="" 13 | POOL_PATH="" 14 | APPS_PATH="" 15 | LAZYLIBRARIAN_SOURCE="" 16 | LAZYLIBRARIAN_DESTINATION="" 17 | BACKUP_PATH="" 18 | BACKUP_NAME="" 19 | 20 | SCRIPT=$(readlink -f "$0") 21 | SCRIPTPATH=$(dirname "$SCRIPT") 22 | . $SCRIPTPATH/LazylibrarianBackup-config 23 | CONFIGS_PATH=$SCRIPTPATH/configs 24 | 25 | # Check for LazylibrarianBackup-config and set configuration 26 | if ! [ -e $SCRIPTPATH/LazylibrarianBackup-config ]; then 27 | echo "$SCRIPTPATH/LazylibrarianBackup-config must exist." 28 | exit 1 29 | fi 30 | 31 | # Check that necessary variables were set by LazylibrarianBackup-config 32 | if [ -z $POOL_PATH ]; then 33 | echo 'Configuration error: POOL_PATH must be set' 34 | exit 1 35 | fi 36 | 37 | if [ -z $LAZYLIBRARIAN_JAIL_NAME ]; then 38 | echo 'Configuration error: LAZYLIBRARIAN_JAIL_NAME must be set' 39 | exit 1 40 | fi 41 | 42 | 43 | if [ -z $APPS_PATH ]; then 44 | echo 'Configuration error: APPS_PATH must be set' 45 | exit 1 46 | fi 47 | if [ -z $LAZYLIBRARIAN_SOURCE ]; then 48 | echo 'Configuration error: LAZYLIBRARIAN_SOURCE must be set' 49 | exit 1 50 | fi 51 | if [ -z $LAZYLIBRARIAN_DESTINATION ]; then 52 | echo 'Configuration error: LAZYLIBRARIAN_DESTINATION must be set' 53 | exit 1 54 | fi 55 | if [ -z $BACKUP_PATH ]; then 56 | echo 'Configuration error: BACKUP_PATH must be set' 57 | exit 1 58 | fi 59 | if [ -z $BACKUP_NAME ]; then 60 | echo 'Configuration error: BACKUP_NAME must be set' 61 | exit 1 62 | fi 63 | if [ ! -d "${POOL_PATH}/${APPS_PATH}/${LAZYLIBRARIAN_SOURCE}" ]; then 64 | echo 65 | echo "You made a LazylibrarianBackup-config error the LAZYLIBRARIAN_SOURCE directory ${POOL_PATH}/${APPS_PATH}/${LAZYLIBRARIAN_SOURCE} does not exist" 66 | mkdir -p ${POOL_PATH}/${APPS_PATH}/${LAZYLIBRARIAN_SOURCE} 67 | chown -R media:media ${POOL_PATH}/${APPS_PATH}/${LAZYLIBRARIAN_SOURCE} 68 | echo 69 | echo "The LAZYLIBRARIAN_SOURCE directory ${POOL_PATH}/${APPS_PATH}/${LAZYLIBRARIAN_SOURCE} has been created for you" 70 | echo 71 | echo "Please run the script again to use that directory or edit the LazylibrarianBackup-config" 72 | exit 1 73 | fi 74 | 75 | if [ ${POOL_PATH} == "/" ]; then 76 | POOL_PATH="" 77 | fi 78 | 79 | echo $POOL_PATH 80 | #cron="yes" 81 | #LAZYLIBRARIAN_JAIL_NAME="lazylibrarian" 82 | #POOL_PATH="/mnt/v1" 83 | #APPS_PATH="apps" 84 | #LAZYLIBRARIAN_SOURCE="lazylibrarian" 85 | #LAZYLIBRARIAN_DESTINATION="lazylibrarian" 86 | #BACKUP_PATH="apps" 87 | #BACKUP_NAME="lazylibrarianbackup.tar.gz" 88 | 89 | if [ "$cron" != "yes" ]; then 90 | read -p "Enter '(B)ackup' to backup Lazylibrarian or '(R)estore' to restore Lazylibrarian: " choice 91 | fi 92 | echo 93 | 94 | if [ "${cron}" == "yes" ]; then 95 | choice="B" 96 | fi 97 | 98 | echo 99 | if [ ${choice} == "B" ] || [ ${choice} == "b" ]; then 100 | if [ ! -d "${POOL_PATH}/${BACKUP_PATH}" ]; then 101 | mkdir -p ${POOL_PATH}/${BACKUP_PATH} 102 | echo "mkdir -p ${POOL_PATH}/${BACKUP_PATH}" 103 | fi 104 | # to backup 105 | # iocage exec ${LAZYLIBRARIAN_JAIL_NAME} service lazylibrarian stop 106 | cd ${POOL_PATH}/${APPS_PATH}/${LAZYLIBRARIAN_SOURCE} 107 | echo 108 | echo "cd ${POOL_PATH}/${APPS_PATH}/${LAZYLIBRARIAN_SOURCE}" 109 | tar -zcpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} ./* 110 | 111 | echo 112 | echo "tar -zcpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} ./*" 113 | echo 114 | echo "Backup complete file located at ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME}" 115 | echo 116 | # iocage exec ${LAZYLIBRARIAN_JAIL_NAME} service lazylibrarian start 117 | elif [ $choice == "R" ] || [ $choice == "r" ]; then 118 | # to restore lazylibrarianbackup to directory 119 | if [ ! -d "${POOL_PATH}/${APPS_PATH}/${LAZYLIBRARIAN_DESTINATION}" ]; then 120 | mkdir -p ${POOL_PATH}/${APPS_PATH}/${LAZYLIBRARIAN_DESTINATION} 121 | echo 122 | echo "mkdir -p ${POOL_PATH}/${APPS_PATH}/${LAZYLIBRARIAN_DESTINATION}" 123 | echo 124 | chowm -R media:media ${POOL_PATH}/${APPS_PATH}/${LAZYLIBRARIAN_DESTINATION} 125 | echo "chown -R media:media ${POOL_PATH}/${APPS_PATH}/${LAZYLIBRARIAN_DESTINATION}" 126 | fi 127 | iocage exec ${LAZYLIBRARIAN_JAIL_NAME} service lazylibrarian stop 128 | tar zvxpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} -C ${POOL_PATH}/${APPS_PATH}/${LAZYLIBRARIAN_DESTINATION} 129 | echo 130 | echo "tar xpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} -C ${POOL_PATH}/${APPS_PATH}/${LAZYLIBRARIAN_DESTINATION}" 131 | echo 132 | echo "Restore completed at ${POOL_PATH}/${APPS_PATH}/${LAZYLIBRARIAN_DESTINATION}" 133 | echo 134 | iocage exec ${LAZYLIBRARIAN_JAIL_NAME} service lazylibrarian start 135 | iocage restart ${LAZYLIBRARIAN_JAIL_NAME} 136 | else 137 | echo 138 | echo "Must enter '(B)ackup' to backup Lazylibrarian or '(R)estore' to restore Lazylibrarian: " 139 | echo 140 | fi 141 | 142 | -------------------------------------------------------------------------------- /tautullibackup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #backup and restore Tautulli data 3 | 4 | # Check for root privileges 5 | if ! [ $(id -u) = 0 ]; then 6 | echo "This script must be run with root privileges" 7 | exit 1 8 | fi 9 | 10 | # Initialize defaults 11 | cron="" 12 | TAUTULLI_JAIL_NAME="" 13 | POOL_PATH="" 14 | APPS_PATH="" 15 | TAUTULLI_SOURCE="" 16 | TAUTULLI_DESTINATION="" 17 | BACKUP_PATH="" 18 | BACKUP_NAME="" 19 | 20 | SCRIPT=$(readlink -f "$0") 21 | SCRIPTPATH=$(dirname "$SCRIPT") 22 | . $SCRIPTPATH/TautulliBackup-config 23 | CONFIGS_PATH=$SCRIPTPATH/configs 24 | 25 | # Check for TautulliBackup-config and set configuration 26 | if ! [ -e $SCRIPTPATH/TautulliBackup-config ]; then 27 | echo "$SCRIPTPATH/TautulliBackup-config must exist." 28 | exit 1 29 | fi 30 | 31 | # Check that necessary variables were set by TautulliBackup-config 32 | if [ -z $POOL_PATH ]; then 33 | echo 'Configuration error: POOL_PATH must be set' 34 | exit 1 35 | fi 36 | 37 | if [ -z $TAUTULLI_JAIL_NAME ]; then 38 | echo 'Configuration error: TAUTULLI_JAIL_NAME must be set' 39 | exit 1 40 | fi 41 | 42 | 43 | if [ -z $APPS_PATH ]; then 44 | echo 'Configuration error: APPS_PATH must be set' 45 | exit 1 46 | fi 47 | if [ -z $TAUTULLI_SOURCE ]; then 48 | echo 'Configuration error: TAUTULLI_SOURCE must be set' 49 | exit 1 50 | fi 51 | if [ -z $TAUTULLI_DESTINATION ]; then 52 | echo 'Configuration error: TAUTULLI_DESTINATION must be set' 53 | exit 1 54 | fi 55 | if [ -z $BACKUP_PATH ]; then 56 | echo 'Configuration error: BACKUP_PATH must be set' 57 | exit 1 58 | fi 59 | if [ -z $BACKUP_NAME ]; then 60 | echo 'Configuration error: BACKUP_NAME must be set' 61 | exit 1 62 | fi 63 | if [ ! -d "${POOL_PATH}/${APPS_PATH}/${TAUTULLI_SOURCE}" ]; then 64 | echo 65 | echo "You made a TautulliBackup-config error the TAUTULLI_SOURCE directory ${POOL_PATH}/${APPS_PATH}/${TAUTULLI_SOURCE} does not exist" 66 | mkdir -p ${POOL_PATH}/${APPS_PATH}/${TAUTULLI_SOURCE} 67 | chown -R 109:109 ${POOL_PATH}/${APPS_PATH}/${TAUTULLI_SOURCE} 68 | echo 69 | echo "The TAUTULLI_SOURCE directory ${POOL_PATH}/${APPS_PATH}/${TAUTULLI_SOURCE} has been created for you" 70 | echo 71 | echo "Please run the script again to use that directory or edit the TautulliBackup-config" 72 | exit 1 73 | fi 74 | 75 | if [ ${POOL_PATH} == "/" ]; then 76 | POOL_PATH="" 77 | fi 78 | 79 | echo $POOL_PATH 80 | #cron="yes" 81 | #TAUTULLI_JAIL_NAME="tautulli" 82 | #POOL_PATH="/mnt/v1" 83 | #APPS_PATH="apps" 84 | #TAUTULLI_SOURCE="tautulli" 85 | #TAUTULLI_DESTINATION="tautulli" 86 | #BACKUP_PATH="apps" 87 | #BACKUP_NAME="tautullibackup.tar.gz" 88 | 89 | if [ "$cron" != "yes" ]; then 90 | read -p "Enter '(B)ackup' to backup Tautulli or '(R)estore' to restore Tautulli: " choice 91 | fi 92 | echo 93 | 94 | if [ "${cron}" == "yes" ]; then 95 | choice="B" 96 | fi 97 | 98 | echo 99 | if [ ${choice} == "B" ] || [ ${choice} == "b" ]; then 100 | if [ ! -d "${POOL_PATH}/${BACKUP_PATH}" ]; then 101 | mkdir -p ${POOL_PATH}/${BACKUP_PATH} 102 | echo "mkdir -p ${POOL_PATH}/${BACKUP_PATH}" 103 | fi 104 | # to backup 105 | #tar --exclude=./*.db-* -zcvf /mnt/v1/apps/tautullibackup.tar.gz ./ 106 | # iocage exec ${TAUTULLI_JAIL_NAME} service tautulli stop 107 | cd ${POOL_PATH}/${APPS_PATH}/${TAUTULLI_SOURCE} 108 | echo 109 | echo "cd ${POOL_PATH}/${APPS_PATH}/${TAUTULLI_SOURCE}" 110 | tar --exclude='./*.lock' --exclude='backups' --exclude='cache' --exclude='logs' --exclude='newsletters' -zcpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} ./* 111 | 112 | echo 113 | echo "tar --exclude='./*.lock' --exclude='backups' --exclude='cache' --exclude='logs' --exclude='newsletters' -zcpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} ./*" 114 | echo 115 | echo "Backup complete file located at ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME}" 116 | echo 117 | # iocage exec ${TAUTULLI_JAIL_NAME} service tautulli start 118 | elif [ $choice == "R" ] || [ $choice == "r" ]; then 119 | # to restore tautullibackup to directory 120 | if [ ! -d "${POOL_PATH}/${APPS_PATH}/${TAUTULLI_DESTINATION}" ]; then 121 | mkdir -p ${POOL_PATH}/${APPS_PATH}/${TAUTULLI_DESTINATION} 122 | echo 123 | echo "mkdir -p ${POOL_PATH}/${APPS_PATH}/${TAUTULLI_DESTINATION}" 124 | echo 125 | chowm -R 109:109 ${POOL_PATH}/${APPS_PATH}/${TAUTULLI_DESTINATION} 126 | echo "chown -R 109:109 ${POOL_PATH}/${APPS_PATH}/${TAUTULLI_DESTINATION}" 127 | fi 128 | #tar xf tautullibackup.tar.gz -C /mnt/v1/apps/plexpass2/ 129 | iocage exec ${TAUTULLI_JAIL_NAME} service tautulli stop 130 | tar zvxpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} -C ${POOL_PATH}/${APPS_PATH}/${TAUTULLI_DESTINATION} 131 | echo 132 | echo "tar xpf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} -C ${POOL_PATH}/${APPS_PATH}/${TAUTULLI_DESTINATION}" 133 | echo 134 | echo "Restore completed at ${POOL_PATH}/${APPS_PATH}/${TAUTULLI_DESTINATION}" 135 | echo 136 | iocage exec ${TAUTULLI_JAIL_NAME} service tautulli start 137 | iocage restart ${TAUTULLI_JAIL_NAME} 138 | else 139 | echo 140 | echo "Must enter '(B)ackup' to backup Tautulli or '(R)estore' to restore Tautulli: " 141 | echo 142 | fi 143 | 144 | -------------------------------------------------------------------------------- /wpBackup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #backup and restore wordpress data 3 | 4 | # Check for root privileges 5 | if ! [ $(id -u) = 0 ]; then 6 | echo "This script must be run with root privileges" 7 | exit 1 8 | fi 9 | 10 | # Initialize defaults 11 | 12 | cron="" 13 | POOL_PATH="" 14 | APPS_PATH="" 15 | CONFIG_PATH="" 16 | JAIL_NAME="" 17 | WP_SOURCE="" 18 | WP_DESTINATION="" 19 | BACKUP_PATH="" 20 | BACKUP_NAME="" 21 | DATABASE_NAME="" 22 | DB_BACKUP_NAME="" 23 | DB_PASSWORD="" 24 | 25 | SCRIPT=$(readlink -f "$0") 26 | SCRIPTPATH=$(dirname "$SCRIPT") 27 | . $SCRIPTPATH/WordpressBackup-config 28 | CONFIGS_PATH=$SCRIPTPATH/configs 29 | 30 | # Check for WordpressBackup-config and set configuration 31 | if ! [ -e $SCRIPTPATH/WordpressBackup-config ]; then 32 | echo "$SCRIPTPATH/WordpressBackup-config must exist." 33 | exit 1 34 | fi 35 | 36 | # Check that necessary variables were set by WordpressBackup-config 37 | if [ -z $POOL_PATH ]; then 38 | echo 'Configuration error: POOL_PATH must be set' 39 | exit 1 40 | fi 41 | 42 | if [ -z $APPS_PATH ]; then 43 | echo 'Configuration error: APPS_PATH must be set' 44 | exit 1 45 | fi 46 | 47 | if [ -z $CONFIG_PATH ]; then 48 | echo 'Configuration error: CONFIG_PATH must be set' 49 | exit 1 50 | fi 51 | 52 | if [ -z $JAIL_NAME ]; then 53 | echo 'Configuration error: JAIL_NAME must be set' 54 | exit 1 55 | fi 56 | 57 | 58 | if [ -z $WP_SOURCE ]; then 59 | 60 | echo 'Configuration error: WP_SOURCE must be set' 61 | exit 1 62 | 63 | fi 64 | 65 | if [ -z $WP_DESTINATION ]; then 66 | 67 | echo 'Configuration error: WP_DESTINATION must be set' 68 | 69 | exit 1 70 | fi 71 | 72 | if [ -z $BACKUP_PATH ]; then 73 | echo 'Configuration error: BACKUP_PATH must be set' 74 | exit 1 75 | fi 76 | 77 | if [ -z $BACKUP_NAME ]; then 78 | echo 'Configuration error: BACKUP_NAME must be set' 79 | exit 1 80 | fi 81 | 82 | if [ -z $DB_PASSWORD ]; then 83 | echo 'Configuration error: DB_PASSWORD must be set' 84 | exit 1 85 | fi 86 | 87 | 88 | if [ ! -d "${POOL_PATH}/${APPS_PATH}/${WP_SOURCE}" ]; then 89 | echo 90 | echo "You made a WordpressBackup-config error the WP_SOURCE directory ${POOL_PATH}/${APPS_PATH}/${WP_SOURCE} does not exist" 91 | mkdir -p ${POOL_PATH}/${APPS_PATH}/${WP_SOURCE} 92 | echo 93 | echo "The WP_SOURCE directory ${POOL_PATH}/${APPS_PATH}/${WP_SOURCE} has been created for you" 94 | echo 95 | echo "Please run the script again to use that directory or edit the WordpressBackup-config" 96 | exit 1 97 | fi 98 | 99 | if [ ${POOL_PATH} == "/" ]; then 100 | POOL_PATH="" 101 | fi 102 | 103 | echo $POOL_PATH 104 | #cron="yes" 105 | #POOL_PATH="/mnt/v1" 106 | #APPS_PATH="apps" 107 | #WP_SOURCE="wordpresspass" 108 | #WP_DESTINATION="wordpresspass2" 109 | #BACKUP_PATH="apps" 110 | #BACKUP_NAME="wordpressbackup.tar.gz" 111 | 112 | if [ "$cron" != "yes" ]; then 113 | read -p "Enter '(B)ackup' to backup Wordpress or '(R)estore' to restore Wordpress: " choice 114 | fi 115 | echo 116 | if [ "${cron}" == "yes" ]; then 117 | choice="B" 118 | #echo "cron = $cron" 119 | fi 120 | echo 121 | if [ ${choice} == "B" ] || [ ${choice} == "b" ]; then 122 | if [ ! -d "${POOL_PATH}/${BACKUP_PATH}" ]; then 123 | mkdir -p ${POOL_PATH}/${BACKUP_PATH} 124 | echo "mkdir -p ${POOL_PATH}/${BACKUP_PATH}" 125 | fi 126 | # to backup 127 | #tar --exclude=./Plex\ Media\ Server/Cache -zcvf /mnt/v1/apps/wordpressbackup.tar.gz ./ 128 | #iocage exec ${JAIL_NAME} "mysqldump --single-transaction -h localhost -u "root" -p"${DB_PASSWORD}" "${DATABASE_NAME}" > "/${POOL_PATH}/${APPS_PATH}/${WP_SOURCE}/${DB_BACKUP_NAME}"" 129 | iocage exec ${JAIL_NAME} "mysqldump --single-transaction -h localhost -u "root" -p"${DB_PASSWORD}" "${DATABASE_NAME}" > "/${CONFIG_PATH}/${DB_BACKUP_NAME}"" 130 | #iocage exec ${JAIL_NAME} "mysqldump --defaults-extra-file=.my.cnf -u root "${DATABASE_NAME}" --single-transaction --quick --lock-tables=false > "/${CONFIG_PATH}/${DB_BACKUP_NAME}"" 131 | echo "Wordpress database backup ${DB_BACKUP_NAME} complete" 132 | #ls -l /${POOL_PATH}/${BACKUP_PATH}/ 133 | cd ${POOL_PATH}/${APPS_PATH}/${WP_SOURCE} 134 | echo "cd ${POOL_PATH}/${APPS_PATH}/${WP_SOURCE}" 135 | tar -zcf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} ./ 136 | echo "tar-zcvf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} ./" 137 | echo "Backup complete file located at ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME}" 138 | chmod 400 ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} 139 | elif [ $choice == "R" ] || [ $choice == "r" ]; then 140 | # to restore wordpressbackup to directory wordpresspass2 141 | if [ ! -d "${POOL_PATH}/${APPS_PATH}/${WP_DESTINATION}" ]; then 142 | mkdir -p ${POOL_PATH}/${APPS_PATH}/${WP_DESTINATION} 143 | echo "mkdir -p ${POOL_PATH}/${APPS_PATH}/${WP_DESTINATION}" 144 | fi 145 | #tar xf wordpressbackup.tar.gz -C /mnt/v1/apps/wordpresspass2/ 146 | tar zvxf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} -C ${POOL_PATH}/${APPS_PATH}/${WP_DESTINATION} 147 | echo "tar xf ${POOL_PATH}/${BACKUP_PATH}/${BACKUP_NAME} -C ${POOL_PATH}/${APPS_PATH}/${WP_DESTINATION}" 148 | echo "restore database" 149 | #iocage exec ${JAIL_NAME} "mysqldump --single-transaction -h localhost -u "root" -p"${DB_PASSWORD}" --databases "${DATABASE}" < "/${CONFIG_PATH}/${DB_BACKUP_NAME}"" 150 | iocage exec ${JAIL_NAME} "mysql -u "root" -p"${DB_PASSWORD}" "${DATABASE_NAME}" < "/${CONFIG_PATH}/${DB_BACKUP_NAME}"" 151 | #iocage exec wordpress "mysql -u "root" -p "wordpress" < "/${CONFIG_PATH}/wordpressorig.sql"" 152 | echo "mysql -u root -p wordpress < /${CONFIG_PATH}/${DB_BACKUP_NAME}" 153 | echo "Restore completed at ${POOL_PATH}/${APPS_PATH}/${WP_DESTINATION}" 154 | else 155 | echo "Must enter '(B)ackup' to backup Wordpress or '(R)estore' to restore Wordpress: " 156 | fi 157 | 158 | 159 | --------------------------------------------------------------------------------