Created
September 25, 2014 09:26
-
-
Save hansek/cc0c5793e9b7a8fe515b to your computer and use it in GitHub Desktop.
Script to easily manage Rsync settings to sync project media
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 | |
# check if config file exists | |
if [ ! -f $(dirname "$0")/rsync_config.sh ]; then | |
echo -e "\e[41mERROR:\e[0m Config file not found!" | |
exit 1 | |
fi | |
# include config file | |
source $(dirname "$0")/rsync_config.sh | |
# help message | |
usage() { | |
echo "MEDIA RSYNC" | |
echo "" | |
echo "SSH-AGENT must be running" | |
echo "" | |
echo "usage: rsync.sh <relative-path-to-local-project-root>" | |
} | |
# check if ssh agent is running and has a loaded key | |
ssh-add -l >/dev/null 2>&1 | |
if [ $? = 2 ]; then | |
# exit-status 2 = couldn't connect to ssh-agent | |
echo "\e[41mERROR:\e[0m SSH-AGENT not active, please start SSH-AGENT before continue!" | |
exit 1 | |
fi | |
# check if relative path to project root has been specified | |
if [ $# -ne 1 ]; then | |
usage | |
exit 1 | |
fi | |
# check if relative path to project root exists | |
if [ ! -d $1 ]; then | |
echo -e "\e[41mERROR:\e[0m Specified relative path to project root not exists!" | |
exit 1 | |
fi | |
# check if server is set in config file | |
if [ "${server}" == "" ]; then | |
echo -e "\e[41mERROR:\e[0m Server not set!" | |
exit 1 | |
fi | |
# check if server is set in config file | |
if [ "${server_path}" == "" ]; then | |
echo -e "\e[41mERROR:\e[0m Server path not set!" | |
exit 1 | |
fi | |
# check if ssh user is set in config file | |
if [ "${user}" == "" ]; then | |
echo -e "\e[41mERROR:\e[0m User not set!" | |
exit 1 | |
fi | |
### MAIN CODE | |
# iterate over paths from config | |
for r_path in ${rsync_paths[*]} | |
do | |
echo -e "\n\e[37;44m###\e[0m Syncing \e[37;44m${r_path}\e[0m to local \e[37;44m$1${r_path}\e[0m\n" | |
rsync -rzvt --delete --perms --chmod=a+rwx -e ssh ${user}@${server}:${server_path}${r_path}/ $1${r_path} | |
echo -e "\n" | |
done | |
echo -e "\n\e[37;42m### DONE\e[0m\n" |
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 | |
# server address | |
server= | |
# server relative project root path | |
server_path= | |
# ssh username | |
user= | |
# paths to be synced (bellow examples for MODX Evolution) | |
rsync_paths=( | |
media/files | |
media/galleries | |
media/images | |
media/flash | |
media/media | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment