wmde-rp/wmde-rp-osync-ssh.sh

129 lines
3.0 KiB
Bash

#!/bin/sh
exec >> /tmp/mys-$USER.txt 2>&1
set -x
. /etc/wmde-rp.conf
USER=`whoami`
PAM_USER=$USER
PAM_TYPE=open_session
. $PREFIX/wmde-rp-check-pam-user.sh
. $PREFIX/wmde-rp-common.sh
SSHARGS="-o UserKnownHostsFile=$WMDERPDIR/known_hosts"
create_wmderpdir
if [ -f "$PIDFILE" ]; then
OLD_PID=`cat "$PIDFILE"`
if kill -0 "$OLD_PID" 2> /dev/null; then
echo "Usersync already running." >> $LOGFILE
exit 0
fi
fi
echo 0 > $CONFIGSYNC
echo 0 > $FULLSYNC
echo $$ > $PIDFILE
create_knonw_hosts_and_nfshomedir
replace_keys_values() {
outfile="$1"
shift
infile="$PREFIX/osync.conf.template" # Kannst du bei Bedarf ebenfalls als Parameter machen
tmpfile="$(mktemp)"
cp "$infile" "$tmpfile"
for pair in "$@"; do
key="${pair%%=*}"
value="${pair#*=}"
# Escape key für sed
escaped_key=$(printf '%s\n' "$key" | sed 's/[][|.^$*+?{}()\\]/\\&/g')
# Escape & im Value, da es in sed als Referenz auf den Match dient
escaped_value=$(printf '%s\n' "$value" | sed 's/[&]/\\&/g')
# Ersetze Zeile mit key=... durch key=value, robust gegen Slashes
sed -i "s|^$escaped_key=.*|$key=$escaped_value|" "$tmpfile"
done
mv "$tmpfile" "$outfile"
}
CONF_INC=".config;.local/share/backgrounds"
CONF_EX=".wmde-osync;.cache;*/.cache;.cache2;*/.cache2;.thunderbird/*/ImapMail/"
FULL_INC="*"
FULL_EX=".wmde-osync;.cache;*/.cache;.cache2;*/.cache2;.thunderbird/*/ImapMail/"
echo $OPTIONAL_ARGS
generate_config()
{
PROFILE="$1"
replace_keys_values $PROFILE \
"INITIATOR_SYNC_DIR=\"$HOMEDIR\""\
"TARGET_SYNC_DIR=\"ssh://$NFSSERVER/$HOMEDIR\"" \
"SSH_OPTIONAL_ARGS=\"$SSHARGS\"" \
"RSYNC_PATTERN_FIRST=include" \
"PRESERVE_OWNER=false" \
"PRESERVE_GROUP=false" \
"RSYNC_OPTIONAL_ARGS=\"$2\"" \
"RSYNC_COMPRESS=false" \
"INSTANCE_ID=\"$3\"" \
"MIN_WAIT=30" \
"MAX_WAIT=300" \
"FORCE_STRANGER_LOCK_RESUME=true" \
"LOGFILE=\"$WMDERPDIR/wmde-rp-sync.log\"" \
# "RSYNC_PATTERN_FIRST=exclude"\
# "RSYNC_INCLUDE_PATTERN=\"$2\"" \
# "RSYNC_EXCLUDE_PATTERN=\"$3\"" \
## List of files / directories to incldue / exclude from sync on both sides (see rsync patterns, wildcards work).
## Paths are relative to sync dirs. List elements are separated by a semicolon.
# "INITIATOR_CUSTOM_STATE_DIR=\"$WMDERPDIR\"" \
# "TARGET_CUSTOM_STATE_DIR=\"$WMDERPDIR"\"
# "RSYNC_INCLUDE_PATTERN=\"Pictures/***;.config/***\"" \
# "RSYNC_EXCLUDE_PATTERN=\"*\""
}
HN=`hostname -f`
CONFNAM="$HN-`echo -n "$CONFIG_DIRS" | md5sum | cut -c1-8`"
FULLNAM="$HN-`echo -n "$FULL_DIRS" | md5sum | cut -c1-8`"
PERMNAM="$HN-`echo -n "$PERM_DIRS" | md5sum | cut -c1-8`"
generate_config "$WMDERPDIR/configsync.conf" "$CONFIG_DIRS" "$CONFNAM"
generate_config "$WMDERPDIR/fullsync.conf" "$FULL_DIRS" "$FULLNAM"
generate_config "$WMDERPDIR/permsync.conf" "$PERM_DIRS" "$PERMNAM"
osync.sh "$WMDERPDIR/configsync.conf" --verbose
echo "$$" > $CONFIGSYNC
osync.sh "$WMDERPDIR/fullsync.conf" --verbose
echo "$$" > $FULLSYNC
echo "$$" > $FIRSTSYNC
osync.sh "$WMDERPDIR/permsync.conf" --verbose --on-changes