mirror of
				https://github.com/flynx/proxmox-utils.git
				synced 2025-11-03 21:50:10 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/bash
 | 
						|
#----------------------------------------------------------------------
 | 
						|
#
 | 
						|
#----------------------------------------------------------------------
 | 
						|
 | 
						|
# XXX
 | 
						|
source $(dirname "$0")/.pct-helpers
 | 
						|
 | 
						|
 | 
						|
#----------------------------------------------------------------------
 | 
						|
 | 
						|
case $1 in
 | 
						|
	-h|--help)
 | 
						|
		echo "Recursively push a directory to a CT creating the necessary paths"
 | 
						|
		echo
 | 
						|
		echo "Usage:"
 | 
						|
		echo "    `basename $0` ID FROM TO"
 | 
						|
		echo
 | 
						|
		exit
 | 
						|
		;;
 | 
						|
	-*)
 | 
						|
		echo "Unknown option: $1"
 | 
						|
		exit
 | 
						|
		;;
 | 
						|
esac
 | 
						|
 | 
						|
if [[ $# < 3 ]] ; then
 | 
						|
	echo ERR need both id and target id 1>&2
 | 
						|
	exit 1
 | 
						|
fi
 | 
						|
 | 
						|
IFS=$'\n'
 | 
						|
 | 
						|
 | 
						|
#----------------------------------------------------------------------
 | 
						|
 | 
						|
id=$1
 | 
						|
from=$2
 | 
						|
to=$3
 | 
						|
 | 
						|
 | 
						|
#----------------------------------------------------------------------
 | 
						|
 | 
						|
wd=$(pwd)
 | 
						|
# get from path relative to working directory...
 | 
						|
if [[ ${from:0:1} != '/' ]] ; then
 | 
						|
	from="$(normpath "${wd}/${from}")"
 | 
						|
fi
 | 
						|
 | 
						|
dirs=($(find "$from" -type d))
 | 
						|
for dir in "${dirs[@]}" ; do
 | 
						|
	if [[ "$dir" == "${to}"  ]] ; then
 | 
						|
		continue
 | 
						|
	fi
 | 
						|
	dir=${dir#${from}}
 | 
						|
	lxc-attach $id -- mkdir -p "${to}/${dir}"
 | 
						|
done
 | 
						|
 | 
						|
files=($(find "$from" -type f))
 | 
						|
for file in "${files[@]}" ; do
 | 
						|
	file=${file#${from}}
 | 
						|
	f=$(normpath "${from}/${file}")
 | 
						|
	t=$(normpath "${to}/${file}")
 | 
						|
	[ $QUIET ] \
 | 
						|
		|| echo "copy: \"${f#${wd}/}\" -> $id:\"$t\""
 | 
						|
	pct push $id "$f" "$t"
 | 
						|
done
 | 
						|
 | 
						|
 | 
						|
#----------------------------------------------------------------------
 | 
						|
# vim:set ts=4 sw=4 nowrap :
 |