44 lines
1.2 KiB
Bash
Executable File
44 lines
1.2 KiB
Bash
Executable File
#!/bin/zsh
|
|
# vi: et sw=4 ts=4:
|
|
# hsv2
|
|
|
|
LOCAL_DIR="${2:="$HOME/goinfre/"}"
|
|
REMOTE_DIR="${3:="$HOME/sgoinfre/goinfre/"}"
|
|
ARCHIVE="${4:="$HOME/sgoinfre/goinfre.tar.gz"}"
|
|
MARKER=".sync.sh.marker"
|
|
LOCAL_MARKER="$LOCAL_DIR/$MARKER"
|
|
REMOTE_MARKER="$REMOTE_DIR/$MARKER"
|
|
|
|
if [[ ! ( -e "$LOCAL_DIR" && -e "$REMOTE_DIR") ]]
|
|
then
|
|
echo "ABORTING: local or remote directory missing"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
if [[ ($1 == "in" || -z $1) && (! -e "$LOCAL_MARKER" || "$LOCAL_MARKER" -ot "$REMOTE_MARKER") ]]
|
|
then
|
|
echo "sync in: $LOCAL_DIR"
|
|
if [[ -f "$ARCHIVE" ]]
|
|
then
|
|
tar xzf "$ARCHIVE" -C "$LOCAL_DIR"
|
|
fi
|
|
rsync -a --progress "$REMOTE_DIR/" "$LOCAL_DIR"
|
|
elif [[ $1 == "out" && (! -e "$REMOTE_MARKER" || "$REMOTE_MARKER" -ot "$LOCAL_DIR") ]]
|
|
then
|
|
echo "sync out: $REMOTE_DIR"
|
|
echo "cleaning brew"
|
|
brew autoremove
|
|
brew cleanup --prune=all
|
|
tar czf "$ARCHIVE.tmp" -C "$LOCAL_DIR" . || (echo "FATAL ERROR. EXITING"; exit 1)
|
|
mv -v "$ARCHIVE.tmp" "$ARCHIVE"
|
|
rsync -a --progress --delete-delay "$LOCAL_DIR/" "$REMOTE_DIR"
|
|
touch "$REMOTE_MARKER"
|
|
elif [[ $1 != "in" && $1 != "out" ]]
|
|
then
|
|
echo -e "parameter invalid\nsyntax: $0 {in|out} [ local [ remote ] ]"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Up to date"
|