Created
October 12, 2014 14:17
-
-
Save serverwentdown/25d840993b710c5dce30 to your computer and use it in GitHub Desktop.
keep your $HOME in sync
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/zsh | |
# CONFIG | |
SERVER="example.com" | |
# Don't put trailing slashes btw. | |
REMOTEDIRECTORY="" # Set to "backup" to push to home directory of remote user. WARNING: Beginning with "/" will push to the remote root directory. | |
LOCALDIRECTORY="$HOME" | |
# REMOTEUSER="ambrosechua" | |
LOG=".homesync.log" | |
HIDDENFILES=".oh-my-zsh .minecraft .irssi" | |
# END CONFIG | |
REMOTEPREFIX="$USER@$SERVER:$REMOTEDIRECTORY" | |
LOCALPREFIX="$LOCALDIRECTORY" | |
FILES="$(ls -m $LOCALPREFIX | sed 's/\ /\\/g' | sed 's/\,\\/\ /g') $HIDDENFILES $LOG" | |
FILES="$(echo $FILES | sed 's/\ /:/g' | sed 's/\\/\ /g' )" | |
FILES=("${(s/:/)FILES}") | |
echo >> "$LOG" | |
echo "$(date): Sync triggered" >> "$LOG" | |
echo "Checking for connectivity to $SERVER" | |
ssh "$USER@$SERVER" cat /proc/cpuinfo > /dev/null 2>&1 | |
STATUS=$? | |
if [[ $STATUS -eq 0 ]]; then | |
echo "$(date): $SERVER is up" >> "$LOG" | |
echo "$SERVER is up! " | |
echo | |
echo "Files to sync: " | |
echo | |
echo $FILES | |
echo | |
echo "Syncing from $LOCALPREFIX to $REMOTEPREFIX" | |
echo | |
echo -n "Starting sync in 5..." | |
sleep 1 | |
echo -n "4..." | |
sleep 1 | |
echo -n "3..." | |
sleep 1 | |
echo -n "2..." | |
sleep 1 | |
echo -n "1..." | |
sleep 1 | |
echo | |
echo "$(date): Starting sync" >> "$LOG" | |
for f in $FILES; do | |
echo "Syncing $f" | |
echo "$(date): Syncing $f" >> "$LOG" | |
rsync -aHxu --numeric-ids --delete --progress -e "ssh -T -c arcfour -o Compression=no -x" $LOCALPREFIX/$f $REMOTEPREFIX$f # > /dev/stdout >> "$LOG" | |
echo "Synced $f" | |
echo "$(date): Synced $f" >> "$LOG" | |
done; | |
# CUSTOM | |
echo "Syncing /Applications" | |
echo "$(date): Syncing /Applications to Applications/root" >> "$LOG" | |
rsync -aHxu --numeric-ids --delete --progress -e "ssh -T -c arcfour -o Compression=no -x" /Applications ambrosechua@example.com:Applications/root | |
echo "Synced /Applications" | |
echo "$(date): Synced /Applications to Applications/root" >> "$LOG" | |
echo "Sync complete! " | |
echo "$(date): Sync complete" >> "$LOG" | |
echo >> "$LOG" | |
else; | |
echo "$(date): $SERVER is unreachable" >> "$LOG" | |
echo "$SERVER is unreachable. " | |
fi; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment