#!/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