You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#!/bin/bash
[ "$UID" != "0" ] && echo "You must be root." 2>&1 && exit 1
## ## code ##
user=rsync src="$1"
if [ -z "$src" ]; then echo "You must provide a source directory as first argument." >&2 exit 1 fi
if ! [ -d "$src" ]; then echo "Folder '$src' not found, please provide a valid directory as first argument." >&2 exit 1 fi
dest="$2"
if [ -z "$dest" ]; then echo "You must provide a host as target." >&2 exit 1 fi
rsync_options=(${RSYNC_OPTIONS:-}) ssh_options=(${SSH_OPTIONS:--o StrictHostKeyChecking=no})
if echo "$dest" | grep "/" >/dev/null 2>&1; then rsync_options=("--bwlimit" "$(echo "$dest" | cut -f 2 -d "/")" "${rsync_options[@]}") dest="$(echo "$dest" | cut -f 1 -d "/")" fi
if echo "$dest" | grep ":" >/dev/null 2>&1; then ssh_options=("-p" "$(echo "$dest" | cut -f 2 -d ":")" "${ssh_options[@]}") dest="$(echo "$dest" | cut -f 1 -d ":")" fi
hostname=$(hostname) hostname=${LABEL_HOSTNAME:-$hostname}
dest_path="/var/mirror/$hostname"
touch /etc/rsync/exclude-patterns touch /etc/rsync/include-patterns
if ! [ -s "/etc/rsync/include-patterns" ]; then echo "Nothing to do as /etc/rsync/include-patterns is empty." exit 0 fi
cmd=(/usr/bin/rsync "${rsync_options[@]}" -azvA -e "sudo -u $user ssh ${ssh_options[*]}" --include-from /etc/rsync/include-patterns --exclude-from /etc/rsync/exclude-patterns --delete --partial --partial-dir .rsync-partial --numeric-ids "$src/" "$user@$dest":"$dest_path")
rsync_uid_gid=$(stat -c "%u:%g" "/var/lib/rsync") chown "$rsync_uid_gid" "/var/lib/rsync/.ssh" -R
echo "${cmd[@]}"
exec "${cmd[@]}"
|