#!/bin/sh # # 2012 Matt Coddington (mcoddington at gmail.com) # 2012 Steven Armstrong (steven-cdist at armstrong.cc) # # This file is part of cdist. # # cdist is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # cdist is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with cdist. If not, see <http://www.gnu.org/licenses/>. # # # Use rsync over ssh to copy files. This particular invocation of # rsync makes a backup of the file before overwriting it. For example, # if cdist overwrites /etc/passwd then you'll end up with the old copy # at /etc/passwd~cdist. # # Usage: # cdist config --remote-copy /path/to/this/script target_host # # For rsync to do the right thing, the source has to end with "/" if it is # a directory. The below preprocessor loop takes care of that. # second last argument is the source source_index=$(($#-1)) index=0 for arg in $@; do if [ $index -eq 0 ]; then # reset $@ set -- fi index=$((index+=1)) if [ $index -eq $source_index -a -d "$arg" ]; then arg="${arg%/}/" fi set -- "$@" "$arg" done rsync --backup --suffix=~cdist -e 'ssh -o User=root' $@