52 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
|  | #!/bin/sh | ||
|  | # | ||
|  | # 2012 Matt Coddington (mcoddington at gmail.com) | ||
|  | # 2012 Steven Armstrong (steven-cdist at armstrong.cc) | ||
|  | # 2013 Chase Allen James (nx-cdist at nu-ex.com) | ||
|  | # | ||
|  | # 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.  Uses the "--rsync-path" option | ||
|  | # to run the remote rsync instance with sudo. | ||
|  | # | ||
|  | # This command assumes your ssh configuration is already set up | ||
|  | # in ~/.ssh/config. | ||
|  | # | ||
|  | # 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 --copy-links --rsync-path="sudo rsync" -e 'ssh' "$@" |