diff --git a/roles/sftpbackup/files/backup-sftp.sh b/roles/sftpbackup/files/backup-sftp.sh new file mode 100644 index 0000000..0dcc172 --- /dev/null +++ b/roles/sftpbackup/files/backup-sftp.sh @@ -0,0 +1,29 @@ +#!/bin/sh + +set -u +umas 077 + +TARGET="/export/backup" +CONFIG="/etc/rclone/rclone.conf" +LOGDIR="/var/log/rclone" +RCLONE="/usr/local/bin/rclone" + +timestamp="$(date %Y%m%d)" + +if [ ! -d "$TARGET" ]; then + echo "ERR: Destination directory '${TARGET}' does not exist" 1>&2 + exit 1 +fi + +for host in $("$RCLONE" --config "$CONFIG" listremotes | tr -d ":") ; do + fqdn="$("$RCLONE" --config "$CONFIG" config show "$host" | \ + awk '{ if ($1 == "host") print $3 }')" + if [ ! -d "${TARGET}/${fqdn}" ]; then + mkdir "${TARGET}/${fqdn}" + fi + log="${LOGDIR}/${fqdn}.${timestamp}.log" + if ! "$RCLONE" --config "$CONFIG" --log-file "$log" --log-level INFO \ + sync "${host}:/" "${TARGET}/${fqdn}/"; then + cat "$log" + fi +done diff --git a/roles/sftpbackup/meta/main.yml b/roles/sftpbackup/meta/main.yml new file mode 100644 index 0000000..61cc3ce --- /dev/null +++ b/roles/sftpbackup/meta/main.yml @@ -0,0 +1,3 @@ +--- +dependencies: + - {role: ssh_known_hosts} diff --git a/roles/sftpbackup/tasks/main.yml b/roles/sftpbackup/tasks/main.yml new file mode 100644 index 0000000..4764b8a --- /dev/null +++ b/roles/sftpbackup/tasks/main.yml @@ -0,0 +1,7 @@ +--- +- import_role: + name: rclone + vars: + hostgroup: sftpbackup + remote_user: backup + destination: /export/backup