From 7fae719399117392aba9e05fe9e4f7c18122774f Mon Sep 17 00:00:00 2001
From: hygienic-books <hygienic-books@tentic.net>
Date: Sat, 28 May 2022 23:10:05 +0200
Subject: [PATCH] Initial commit

---
 home/.ssh/android-copy-backups.sh.known_hosts |  4 ++
 .../android-copy-backups.sh.ssh-private-key   |  0
 .../android-copy-backups.sh.ssh-public-key    |  0
 home/.termux/tasker/android-copy-backups.sh   | 72 +++++++++++++++++++
 4 files changed, 76 insertions(+)
 create mode 100644 home/.ssh/android-copy-backups.sh.known_hosts
 create mode 100644 home/.ssh/android-copy-backups.sh.ssh-private-key
 create mode 100644 home/.ssh/android-copy-backups.sh.ssh-public-key
 create mode 100644 home/.termux/tasker/android-copy-backups.sh

diff --git a/home/.ssh/android-copy-backups.sh.known_hosts b/home/.ssh/android-copy-backups.sh.known_hosts
new file mode 100644
index 0000000..a26075f
--- /dev/null
+++ b/home/.ssh/android-copy-backups.sh.known_hosts
@@ -0,0 +1,4 @@
+# Example known_hosts entries
+|1|+um5frSW7VwmX/QODni+oJG4AVI=|bEc28fJyS+uLnMd611M5QZuoCcU= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC2Zx6ysyUg5U8zwWc9iqGnLzpdNnW0yh3CjNfYq+/viahofQi0TYcfKbI+gibnfFee8yz5qIyenA55MJY6DTJdWzq44WLyNoL+MXOhPZ5kOYRxI8a7Lt7gffYdfBRbAbc8NzO/AbtGTyHSQDKLlB1dI52+iQPoiFLVkE1q8CeTyNzpoL++gzDGx9K+P4jG1hWn2NMcRmihBZKRULAoGTUXXtA5I8J4s9kdRqOyNPqSH1AvEY2fuiUSHoU5M7wjH36rKrTpW0A99yyG3+X7r0aolzSgaard3izZxZ5Dyino1ORNmVZ+x6Gy+RmwlZbI/RE95KP1A3BAwSqtJCSnPz9V
+|1|N/pgWDcZ2gZltCX0H5LBJsj/QyE=|V+HYraDDIEFa/E9IsLyI8P13Onw= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNlVAWMqn9ku266vS4uomkh654vgAgs4QcUViDE4THkkZJVRo/xNuwPIaqasBOpN6TxGNI0iLEusxTHvkbK07pM=
+|1|jKXhrqA1nwYbm3P1NGW30FsmgeA=|sCfD9KOYMdK2P8JqLK0AsIifZDo= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM7mgJkIkiUJCCU7R0XhNixG7LqQCNiFlxKT94VOqIiM
diff --git a/home/.ssh/android-copy-backups.sh.ssh-private-key b/home/.ssh/android-copy-backups.sh.ssh-private-key
new file mode 100644
index 0000000..e69de29
diff --git a/home/.ssh/android-copy-backups.sh.ssh-public-key b/home/.ssh/android-copy-backups.sh.ssh-public-key
new file mode 100644
index 0000000..e69de29
diff --git a/home/.termux/tasker/android-copy-backups.sh b/home/.termux/tasker/android-copy-backups.sh
new file mode 100644
index 0000000..2a2b757
--- /dev/null
+++ b/home/.termux/tasker/android-copy-backups.sh
@@ -0,0 +1,72 @@
+#!/bin/bash
+
+declare thisScriptCallCommand thisScriptAbsPath thisScriptFileName thisScriptBaseName
+thisScriptCallCommand="${BASH_SOURCE[0]}"
+thisScriptAbsPath="$(realpath -s "${thisScriptCallCommand}" 2>/dev/null || { pushd "$(dirname "${0}")" &>/dev/null || exit 1; echo -n "$(cd "$(dirname "${0}")"
+&>/dev/null || true; pwd -P)/$(basename "${BASH_SOURCE[0]}")"; })"
+thisScriptFileName=$(basename "${thisScriptAbsPath}")
+thisScriptBaseName="${thisScriptFileName%\.*}"
+
+declare lockFileDescriptor lockFileDir lockFileNameAbsPath
+lockFileDescriptor='200'
+lockFileDir='/data/data/com.termux/files/usr/run/lock/quico-ops/scripts'
+lockFileDir="${lockFileDir%/}"'/'"${thisScriptBaseName}"
+mkdir -p "${lockFileDir}"
+lockFileNameAbsPath="${lockFileDir}/${thisScriptBaseName}.lock"
+
+# Locking mechanism is pretty much
+# http://www.kfirlavi.com/blog/2012/11/06/elegant-locking-of-bash-program/
+
+# shellcheck disable=SC2120
+function lock () {
+    local fd="${1:-$lockFileDescriptor}"
+
+    # Create lock file
+    eval "exec ${fd}> ${lockFileNameAbsPath}"
+
+    # Acquire lock
+    flock -n "${fd}" && return 0 || return 1
+}
+
+function eexit () {
+    local errorStr="${*}"
+    echo "${errorStr}"
+    exit 1
+}
+
+lock || eexit "Only one instance of ${thisScriptAbsPath} can run at a time."
+
+function cleanup () {
+    rm -f "${lockFileNameAbsPath}" &> /dev/null
+}
+trap cleanup EXIT
+
+declare target sourceDirBasePath sshFilesBaseDir sshPrivateKeyFileName sshKnownHostsFileName
+declare -a sourceDirChildPathComponents
+
+[[ ! "${1}" ]] && {
+    printf -- '%s\n' 'Argument 1 is empty. Must be rsync [USER@]HOST:DEST string. Exiting 1 ...'
+    exit 1
+}
+target="${1}"
+
+sourceDirBasePath='/storage/3430-3833'
+sourceDirBasePath="${sourceDirBasePath%/}"
+sshFilesBaseDir='/data/data/com.termux/files/home/.ssh'
+sshFilesBaseDir="${sshFilesBaseDir%/}"
+sshPrivateKeyFileName='android-copy-backups.sh.ssh-private-key'
+sshKnownHostsFileName='android-copy-backups.sh.known_hosts'
+
+sourceDirChildPathComponents[0]='DCIM'
+sourceDirChildPathComponents[1]='Signal'
+sourceDirChildPathComponents[2]='User'
+sourceDirChildPathComponents[3]='SwiftBackup'
+
+for sourceDir in "${sourceDirChildPathComponents[@]}"; do
+    rsync -a --delete -e 'ssh -o IdentitiesOnly=yes -o StrictHostKeyChecking=yes -o PasswordAuthentication=no -o ChallengeResponseAuthentication=no -o PubkeyAut
+hentication=yes -o IdentityFile='"${sshFilesBaseDir}"'/'"${sshPrivateKeyFileName}"' -o UserKnownHostsFile='"${sshFilesBaseDir}"'/'"${sshKnownHostsFileName}" "${
+sourceDirBasePath}"'/'"${sourceDir%/}" "${target}"'/'
+    if [[ "${?}" -eq '0' ]]; then
+        printf -- '%s\n' 'Successfully copied '"'${sourceDir}'"' data'
+    fi
+done
\ No newline at end of file