Created
January 18, 2020 21:22
-
-
Save kmfarley11/3f23d0392049be1acb4398cca0278c49 to your computer and use it in GitHub Desktop.
Simple File Sync Using SCP
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/bash | |
# A very simple script (function) to enable file syncing given a server IP running (open)sshd | |
# | |
# rsync is probably a better option... but if you cant, ssh/scp is pretty straightforward | |
# | |
# to setup (open)sshd on windows 10 refer to https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse | |
# to setup (open)sshd on linux / mac refer to your package manager (i.e. apt-get install openssh-server) | |
# | |
# This script makes a few assumptions, if you just source this file (source do_sync.sh) then execute "do_sync" to see usage | |
# NOTE: you need to set the following environment variables: SYNC_HOST and SYNC_USER | |
function do_sync { | |
# $SYNC_HOST is server to scp with | |
# $SYNC_USER is user to scp as | |
# $1 decides (l2s) local to server or (s2l) server to local (bak) bidirectional bakup | |
echo "using: SYNC_HOST ($SYNC_HOST), SYNC_USER ($SYNC_USER)" | |
DIRECTION=${1:-invalid} | |
LOCAL_PATH=${2:-invalid} | |
SERVER_PATH=${3:-invalid} | |
LOCAL_HOST=$(cat /etc/hostname) | |
if [ "$DIRECTION" = "bak" ]; then | |
echo "backing up server and local files by hostnames" | |
scp $SYNC_USER@$SYNC_HOST:$SERVER_PATH $LOCAL_PATH.$SYNC_HOST.bak | |
scp $LOCAL_PATH $SYNC_USER@$SYNC_HOST:$SERVER_PATH.$LOCAL_HOST.bak | |
cp $LOCAL_PATH $LOCAL_PATH.$LOCAL_HOST.bak | |
scp $LOCAL_PATH.$SYNC_HOST.bak $SYNC_USER@$SYNC_HOST:$SERVER_PATH.$SYNC_HOST.bak | |
elif [ "$DIRECTION" = "l2s" ]; then | |
echo "replacing server with local file" | |
scp $LOCAL_PATH $SYNC_USER@$SYNC_HOST:$SERVER_PATH | |
elif [ "$DIRECTION" = "s2l" ]; then | |
echo "replacing local with server file" | |
scp $SYNC_USER:$SYNC_HOST:$SERVER_PATH $LOCAL_PATH | |
else | |
echo "invalid selection(s): '$DIRECTION', '$LOCAL_PATH', '$SERVER_PATH'" | |
echo "Usage: do_sync <direction> <local_path> <server_path>" | |
echo " <direction> = l2s (local to server)" | |
echo " s2l (server to local)" | |
echo " bak (bidirectional backup)" | |
echo " <local_path> = path to local file to sync/backup" | |
echo " <server_path> = path to server file to sync/backup" | |
echo "" | |
echo "SYNC_HOST, SYNC_USER, and LOCAL_HOST can be changed" | |
echo " export SYNC_USER=<server user to scp as>" | |
echo " export SYNC_HOST=<desired server>" | |
echo " export LOCAL_HOST=<local identifier>" | |
return 1 | |
fi | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment