spez_, 1 year ago Here’s mine: shared.sh <pre style="background-color:#ffffff;"> <span style="font-style:italic;color:#969896;">#!/bin/bash </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;"># Sources to be backed up </span><span style="color:#323232;">SOURCES</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#323232;">( </span><span style="color:#323232;"> </span><span style="color:#183691;">"/srv/dev-disk-by-uuid-a57d5696-00fk-4d1c-9885-095ad5cf71ba/Stuff/" </span><span style="color:#323232;">) </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;"># Restic configurations </span><span style="color:#323232;">RESTIC_CONFIG_LOCATION</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"/srv/dev-disk-by-uuid-a77de696-04f9-4d1c-9875-055advcf71ba/Stuff/Projects/Setup/Backups/restic-config" </span><span style="color:#323232;">RESTIC_REPO</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"/srv/dev-disk-by-uuid-25EE65533BB23C37/restic/repo" </span><span style="color:#323232;">RESTIC_PASSWORD_FILE</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"${</span><span style="color:#323232;">RESTIC_CONFIG_LOCATION</span><span style="color:#183691;">}/config/password.txt" </span><span style="color:#323232;">RESTIC_EXCLUDE_FILE</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"${</span><span style="color:#323232;">RESTIC_CONFIG_LOCATION</span><span style="color:#183691;">}/config/excludes.txt" </span><span style="color:#323232;">RESTIC_LOG_LOCATION</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"${</span><span style="color:#323232;">RESTIC_CONFIG_LOCATION</span><span style="color:#183691;">}/logs" </span><span style="color:#323232;">RESTIC_LOCK_LOCATION</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"${</span><span style="color:#323232;">RESTIC_REPO</span><span style="color:#183691;">}/locks" </span><span style="color:#323232;">RESTIC_MOUNT_LOCATION</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"/srv/dev-disk-by-uuid-28EE65538BB23J37/restic/mount" </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;"># RClone configurations </span><span style="color:#323232;">RCLONE_CONFIG</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"${</span><span style="color:#323232;">RESTIC_CONFIG_LOCATION</span><span style="color:#183691;">}/config/rclone.conf" </span><span style="color:#323232;">RCLONE_REPO</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"bucket:restic-backup" </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">function </span><span style="font-weight:bold;color:#795da3;">unlock-repo</span><span style="color:#323232;">() { </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">if </span><span style="color:#62a35c;">[[ </span><span style="color:#323232;">$(ls -A ${RESTIC_LOCK_LOCATION}) </span><span style="color:#62a35c;">]] </span><span style="font-weight:bold;color:#a71d5d;">; then </span><span style="color:#323232;"> restic -r ${RESTIC_REPO} unlock --password-file</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#323232;">${RESTIC_PASSWORD_FILE} </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">fi </span><span style="color:#323232;">} </span> backup.sh <pre style="background-color:#ffffff;"> <span style="font-style:italic;color:#969896;">#!/usr/bin/env bash </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;"># Get the directory this script is from, and then source the </span><span style="font-style:italic;color:#969896;"># shared.sh shell script for the environment variables and </span><span style="font-style:italic;color:#969896;"># functions </span><span style="color:#323232;">BASEDIR</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">$(</span><span style="color:#323232;">dirname </span><span style="color:#183691;">"$</span><span style="color:#323232;">0</span><span style="color:#183691;">") </span><span style="color:#62a35c;">source </span><span style="color:#183691;">"${</span><span style="color:#323232;">BASEDIR</span><span style="color:#183691;">}/shared.sh" </span><span style="color:#323232;"> </span><span style="color:#323232;">RESTIC_LOG_FILE</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"${</span><span style="color:#323232;">RESTIC_LOG_LOCATION</span><span style="color:#183691;">}/log-backup.txt" </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;"># Backs up the sources to the local Restic repository </span><span style="font-weight:bold;color:#a71d5d;">function </span><span style="font-weight:bold;color:#795da3;">backup</span><span style="color:#323232;">() { </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;"># Get the latest saved parent snapshot ID </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">local </span><span style="color:#323232;">short_id</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">$(</span><span style="color:#323232;">restic -r </span><span style="color:#183691;">${</span><span style="color:#323232;">RESTIC_REPO</span><span style="color:#183691;">}</span><span style="color:#323232;"> --password-file</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">${</span><span style="color:#323232;">RESTIC_PASSWORD_FILE</span><span style="color:#183691;">}</span><span style="color:#323232;"> --json</span><span style="color:#183691;"> snapshots </span><span style="font-weight:bold;color:#a71d5d;">| </span><span style="color:#323232;">jq -r </span><span style="color:#183691;">'max_by(.time) | .short_id') </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;"># Back up and log the results </span><span style="color:#323232;"> ( </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> date </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> restic -r ${RESTIC_REPO} backup ${SOURCES[@]} --exclude-file</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#323232;">${RESTIC_EXCLUDE_FILE} --password-file</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#323232;">${RESTIC_PASSWORD_FILE} --parent ${short_id} --compression max </span><span style="color:#323232;"> ) </span><span style="font-weight:bold;color:#a71d5d;">>></span><span style="color:#323232;">${RESTIC_LOG_FILE} </span><span style="color:#323232;">} </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">function </span><span style="font-weight:bold;color:#795da3;">main</span><span style="color:#323232;">() { </span><span style="color:#323232;"> unlock-repo </span><span style="color:#323232;"> backup </span><span style="color:#323232;">} </span><span style="color:#323232;"> </span><span style="color:#323232;">main $@ </span> validate.sh <pre style="background-color:#ffffff;"> <span style="font-style:italic;color:#969896;">#!/usr/bin/env bash </span><span style="color:#323232;"> </span><span style="color:#323232;">BASEDIR</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">$(</span><span style="color:#323232;">dirname </span><span style="color:#183691;">"$</span><span style="color:#323232;">0</span><span style="color:#183691;">") </span><span style="color:#62a35c;">source </span><span style="color:#183691;">"${</span><span style="color:#323232;">BASEDIR</span><span style="color:#183691;">}/shared.sh" </span><span style="color:#323232;"> </span><span style="color:#323232;">RESTIC_LOG_FILE</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"${</span><span style="color:#323232;">RESTIC_LOG_LOCATION</span><span style="color:#183691;">}/log-validate.txt" </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;"># Validates the local Restic repository. </span><span style="font-weight:bold;color:#a71d5d;">function </span><span style="font-weight:bold;color:#795da3;">validate-locally</span><span style="color:#323232;">() { </span><span style="color:#323232;"> ( </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> date </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> restic -r ${RESTIC_REPO} check --read-data --password-file</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#323232;">${RESTIC_PASSWORD_FILE} </span><span style="color:#323232;"> ) </span><span style="font-weight:bold;color:#a71d5d;">>></span><span style="color:#323232;">${RESTIC_LOG_FILE} </span><span style="color:#323232;">} </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">function </span><span style="font-weight:bold;color:#795da3;">main</span><span style="color:#323232;">() { </span><span style="color:#323232;"> unlock-repo </span><span style="color:#323232;"> validate-locally </span><span style="color:#323232;">} </span><span style="color:#323232;"> </span><span style="color:#323232;">main $@ </span> sync.sh <pre style="background-color:#ffffff;"> <span style="font-style:italic;color:#969896;">#!/usr/bin/env bash </span><span style="color:#323232;"> </span><span style="color:#323232;">BASEDIR</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">$(</span><span style="color:#323232;">dirname </span><span style="color:#183691;">"$</span><span style="color:#323232;">0</span><span style="color:#183691;">") </span><span style="color:#62a35c;">source </span><span style="color:#183691;">"${</span><span style="color:#323232;">BASEDIR</span><span style="color:#183691;">}/shared.sh" </span><span style="color:#323232;"> </span><span style="color:#323232;">RESTIC_LOG_FILE</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"${</span><span style="color:#323232;">RESTIC_LOG_LOCATION</span><span style="color:#183691;">}/log-sync.txt" </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;"># Syncs the local Restic repository to the cloud provider, under the 'Restic' folder. </span><span style="font-weight:bold;color:#a71d5d;">function </span><span style="font-weight:bold;color:#795da3;">cloud-sync</span><span style="color:#323232;">() { </span><span style="color:#323232;"> ( </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> date </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> ) </span><span style="font-weight:bold;color:#a71d5d;">>></span><span style="color:#323232;">${RESTIC_LOG_FILE} </span><span style="color:#323232;"> rclone -v sync ${RESTIC_REPO} ${RCLONE_REPO} --config</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#323232;">${RCLONE_CONFIG} --log-file</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#323232;">${RESTIC_LOG_FILE} --b2-hard-delete </span><span style="color:#323232;"> rclone cleanup ${RCLONE_REPO} --config</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#323232;">${RCLONE_CONFIG} --log-file</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#323232;">${RESTIC_LOG_FILE} </span><span style="color:#323232;">} </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">function </span><span style="font-weight:bold;color:#795da3;">main</span><span style="color:#323232;">() { </span><span style="color:#323232;"> cloud-sync </span><span style="color:#323232;">} </span><span style="color:#323232;"> </span><span style="color:#323232;">main $@ </span>
Here’s mine:
shared.sh
<pre style="background-color:#ffffff;"> <span style="font-style:italic;color:#969896;">#!/bin/bash </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;"># Sources to be backed up </span><span style="color:#323232;">SOURCES</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#323232;">( </span><span style="color:#323232;"> </span><span style="color:#183691;">"/srv/dev-disk-by-uuid-a57d5696-00fk-4d1c-9885-095ad5cf71ba/Stuff/" </span><span style="color:#323232;">) </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;"># Restic configurations </span><span style="color:#323232;">RESTIC_CONFIG_LOCATION</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"/srv/dev-disk-by-uuid-a77de696-04f9-4d1c-9875-055advcf71ba/Stuff/Projects/Setup/Backups/restic-config" </span><span style="color:#323232;">RESTIC_REPO</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"/srv/dev-disk-by-uuid-25EE65533BB23C37/restic/repo" </span><span style="color:#323232;">RESTIC_PASSWORD_FILE</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"${</span><span style="color:#323232;">RESTIC_CONFIG_LOCATION</span><span style="color:#183691;">}/config/password.txt" </span><span style="color:#323232;">RESTIC_EXCLUDE_FILE</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"${</span><span style="color:#323232;">RESTIC_CONFIG_LOCATION</span><span style="color:#183691;">}/config/excludes.txt" </span><span style="color:#323232;">RESTIC_LOG_LOCATION</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"${</span><span style="color:#323232;">RESTIC_CONFIG_LOCATION</span><span style="color:#183691;">}/logs" </span><span style="color:#323232;">RESTIC_LOCK_LOCATION</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"${</span><span style="color:#323232;">RESTIC_REPO</span><span style="color:#183691;">}/locks" </span><span style="color:#323232;">RESTIC_MOUNT_LOCATION</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"/srv/dev-disk-by-uuid-28EE65538BB23J37/restic/mount" </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;"># RClone configurations </span><span style="color:#323232;">RCLONE_CONFIG</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"${</span><span style="color:#323232;">RESTIC_CONFIG_LOCATION</span><span style="color:#183691;">}/config/rclone.conf" </span><span style="color:#323232;">RCLONE_REPO</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"bucket:restic-backup" </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">function </span><span style="font-weight:bold;color:#795da3;">unlock-repo</span><span style="color:#323232;">() { </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">if </span><span style="color:#62a35c;">[[ </span><span style="color:#323232;">$(ls -A ${RESTIC_LOCK_LOCATION}) </span><span style="color:#62a35c;">]] </span><span style="font-weight:bold;color:#a71d5d;">; then </span><span style="color:#323232;"> restic -r ${RESTIC_REPO} unlock --password-file</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#323232;">${RESTIC_PASSWORD_FILE} </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">fi </span><span style="color:#323232;">} </span>
backup.sh
<pre style="background-color:#ffffff;"> <span style="font-style:italic;color:#969896;">#!/usr/bin/env bash </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;"># Get the directory this script is from, and then source the </span><span style="font-style:italic;color:#969896;"># shared.sh shell script for the environment variables and </span><span style="font-style:italic;color:#969896;"># functions </span><span style="color:#323232;">BASEDIR</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">$(</span><span style="color:#323232;">dirname </span><span style="color:#183691;">"$</span><span style="color:#323232;">0</span><span style="color:#183691;">") </span><span style="color:#62a35c;">source </span><span style="color:#183691;">"${</span><span style="color:#323232;">BASEDIR</span><span style="color:#183691;">}/shared.sh" </span><span style="color:#323232;"> </span><span style="color:#323232;">RESTIC_LOG_FILE</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"${</span><span style="color:#323232;">RESTIC_LOG_LOCATION</span><span style="color:#183691;">}/log-backup.txt" </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;"># Backs up the sources to the local Restic repository </span><span style="font-weight:bold;color:#a71d5d;">function </span><span style="font-weight:bold;color:#795da3;">backup</span><span style="color:#323232;">() { </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;"># Get the latest saved parent snapshot ID </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">local </span><span style="color:#323232;">short_id</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">$(</span><span style="color:#323232;">restic -r </span><span style="color:#183691;">${</span><span style="color:#323232;">RESTIC_REPO</span><span style="color:#183691;">}</span><span style="color:#323232;"> --password-file</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">${</span><span style="color:#323232;">RESTIC_PASSWORD_FILE</span><span style="color:#183691;">}</span><span style="color:#323232;"> --json</span><span style="color:#183691;"> snapshots </span><span style="font-weight:bold;color:#a71d5d;">| </span><span style="color:#323232;">jq -r </span><span style="color:#183691;">'max_by(.time) | .short_id') </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;"># Back up and log the results </span><span style="color:#323232;"> ( </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> date </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> restic -r ${RESTIC_REPO} backup ${SOURCES[@]} --exclude-file</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#323232;">${RESTIC_EXCLUDE_FILE} --password-file</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#323232;">${RESTIC_PASSWORD_FILE} --parent ${short_id} --compression max </span><span style="color:#323232;"> ) </span><span style="font-weight:bold;color:#a71d5d;">>></span><span style="color:#323232;">${RESTIC_LOG_FILE} </span><span style="color:#323232;">} </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">function </span><span style="font-weight:bold;color:#795da3;">main</span><span style="color:#323232;">() { </span><span style="color:#323232;"> unlock-repo </span><span style="color:#323232;"> backup </span><span style="color:#323232;">} </span><span style="color:#323232;"> </span><span style="color:#323232;">main $@ </span>
validate.sh
<pre style="background-color:#ffffff;"> <span style="font-style:italic;color:#969896;">#!/usr/bin/env bash </span><span style="color:#323232;"> </span><span style="color:#323232;">BASEDIR</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">$(</span><span style="color:#323232;">dirname </span><span style="color:#183691;">"$</span><span style="color:#323232;">0</span><span style="color:#183691;">") </span><span style="color:#62a35c;">source </span><span style="color:#183691;">"${</span><span style="color:#323232;">BASEDIR</span><span style="color:#183691;">}/shared.sh" </span><span style="color:#323232;"> </span><span style="color:#323232;">RESTIC_LOG_FILE</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"${</span><span style="color:#323232;">RESTIC_LOG_LOCATION</span><span style="color:#183691;">}/log-validate.txt" </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;"># Validates the local Restic repository. </span><span style="font-weight:bold;color:#a71d5d;">function </span><span style="font-weight:bold;color:#795da3;">validate-locally</span><span style="color:#323232;">() { </span><span style="color:#323232;"> ( </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> date </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> restic -r ${RESTIC_REPO} check --read-data --password-file</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#323232;">${RESTIC_PASSWORD_FILE} </span><span style="color:#323232;"> ) </span><span style="font-weight:bold;color:#a71d5d;">>></span><span style="color:#323232;">${RESTIC_LOG_FILE} </span><span style="color:#323232;">} </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">function </span><span style="font-weight:bold;color:#795da3;">main</span><span style="color:#323232;">() { </span><span style="color:#323232;"> unlock-repo </span><span style="color:#323232;"> validate-locally </span><span style="color:#323232;">} </span><span style="color:#323232;"> </span><span style="color:#323232;">main $@ </span>
sync.sh
<pre style="background-color:#ffffff;"> <span style="font-style:italic;color:#969896;">#!/usr/bin/env bash </span><span style="color:#323232;"> </span><span style="color:#323232;">BASEDIR</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">$(</span><span style="color:#323232;">dirname </span><span style="color:#183691;">"$</span><span style="color:#323232;">0</span><span style="color:#183691;">") </span><span style="color:#62a35c;">source </span><span style="color:#183691;">"${</span><span style="color:#323232;">BASEDIR</span><span style="color:#183691;">}/shared.sh" </span><span style="color:#323232;"> </span><span style="color:#323232;">RESTIC_LOG_FILE</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#183691;">"${</span><span style="color:#323232;">RESTIC_LOG_LOCATION</span><span style="color:#183691;">}/log-sync.txt" </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;"># Syncs the local Restic repository to the cloud provider, under the 'Restic' folder. </span><span style="font-weight:bold;color:#a71d5d;">function </span><span style="font-weight:bold;color:#795da3;">cloud-sync</span><span style="color:#323232;">() { </span><span style="color:#323232;"> ( </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> date </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> </span><span style="color:#62a35c;">echo </span><span style="color:#323232;"> ) </span><span style="font-weight:bold;color:#a71d5d;">>></span><span style="color:#323232;">${RESTIC_LOG_FILE} </span><span style="color:#323232;"> rclone -v sync ${RESTIC_REPO} ${RCLONE_REPO} --config</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#323232;">${RCLONE_CONFIG} --log-file</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#323232;">${RESTIC_LOG_FILE} --b2-hard-delete </span><span style="color:#323232;"> rclone cleanup ${RCLONE_REPO} --config</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#323232;">${RCLONE_CONFIG} --log-file</span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#323232;">${RESTIC_LOG_FILE} </span><span style="color:#323232;">} </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">function </span><span style="font-weight:bold;color:#795da3;">main</span><span style="color:#323232;">() { </span><span style="color:#323232;"> cloud-sync </span><span style="color:#323232;">} </span><span style="color:#323232;"> </span><span style="color:#323232;">main $@ </span>