| 
									
										
										
										
											2023-12-30 17:52:29 +03:00
										 |  |  | #!/usr/bin/bash | 
					
						
							|  |  |  | #---------------------------------------------------------------------- | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | #---------------------------------------------------------------------- | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-30 18:46:16 +03:00
										 |  |  | # XXX | 
					
						
							| 
									
										
										
										
											2023-12-30 18:49:55 +03:00
										 |  |  | source $(dirname "$0")/.pct-helpers | 
					
						
							| 
									
										
										
										
											2023-12-30 18:41:35 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------- | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-30 17:52:29 +03:00
										 |  |  | 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-30 18:05:58 +03:00
										 |  |  | IFS=$'\n' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------- | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-30 17:52:29 +03:00
										 |  |  | id=$1 | 
					
						
							|  |  |  | from=$2 | 
					
						
							|  |  |  | to=$3 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-30 18:57:07 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | wd=$(pwd) | 
					
						
							| 
									
										
										
										
											2023-12-30 18:05:58 +03:00
										 |  |  | # get from path relative to working directory... | 
					
						
							|  |  |  | if [[ ${from:0:1} != '/' ]] ; then | 
					
						
							| 
									
										
										
										
											2023-12-30 18:57:07 +03:00
										 |  |  | 	from="$(normpath "${wd}/${from}")" | 
					
						
							| 
									
										
										
										
											2023-12-30 18:05:58 +03:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-30 17:52:29 +03:00
										 |  |  | 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-30 18:51:53 +03:00
										 |  |  | files=($(find "$from" -type f)) | 
					
						
							| 
									
										
										
										
											2023-12-30 17:52:29 +03:00
										 |  |  | for file in "${files[@]}" ; do | 
					
						
							|  |  |  | 	file=${file#${from}} | 
					
						
							| 
									
										
										
										
											2023-12-30 18:37:35 +03:00
										 |  |  | 	f=$(normpath "${from}/${file}") | 
					
						
							|  |  |  | 	t=$(normpath "${to}/${file}") | 
					
						
							| 
									
										
										
										
											2023-12-30 17:52:29 +03:00
										 |  |  | 	[ $QUIET ] \ | 
					
						
							| 
									
										
										
										
											2023-12-30 18:57:07 +03:00
										 |  |  | 		|| echo "copy: \"${f#${wd}/}\" -> $id:\"$t\"" | 
					
						
							| 
									
										
										
										
											2023-12-30 18:37:35 +03:00
										 |  |  | 	pct push $id "$f" "$t" | 
					
						
							| 
									
										
										
										
											2023-12-30 17:52:29 +03:00
										 |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------- | 
					
						
							|  |  |  | # vim:set ts=4 sw=4 nowrap : |