| 
									
										
										
										
											2014-05-26 13:40:18 +04:00
										 |  |  | #!/bin/bash
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | DATE=`date +%Y%m%d` | 
					
						
							|  |  |  | COUNT=1 | 
					
						
							| 
									
										
										
										
											2014-06-24 00:27:49 +04:00
										 |  |  | TITLE="" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-02 18:56:28 +04:00
										 |  |  | while true ; do | 
					
						
							|  |  |  | 	case "$1" in | 
					
						
							|  |  |  | 		-h|-help|--help) | 
					
						
							|  |  |  | 			echo "usage: `basename $0` FLAGS DRIVE [TITLE]" | 
					
						
							|  |  |  | 			echo | 
					
						
							|  |  |  | 			echo "	-h|-help	print this message and exit." | 
					
						
							|  |  |  | 			echo "	-m|-multi	single base, multiple sub dirs" | 
					
						
							|  |  |  | 			echo "			for multiple flash cards in a" | 
					
						
							|  |  |  | 			echo "			single shoot." | 
					
						
							|  |  |  | 			echo "	-l|-last	last flash card in set, run" | 
					
						
							|  |  |  | 			echo "			process-archive.sh after copying." | 
					
						
							|  |  |  | 			echo | 
					
						
							|  |  |  | 			exit | 
					
						
							|  |  |  | 			;; | 
					
						
							| 
									
										
										
										
											2014-08-05 04:24:50 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		-i|--interactive) | 
					
						
							|  |  |  | 			INTERACTIVE=1 | 
					
						
							|  |  |  | 			shift | 
					
						
							|  |  |  | 			;; | 
					
						
							| 
									
										
										
										
											2014-08-02 18:56:28 +04:00
										 |  |  | 		-m|-multi|--multi) | 
					
						
							|  |  |  | 			MULTI=1 | 
					
						
							|  |  |  | 			shift | 
					
						
							|  |  |  | 			;; | 
					
						
							|  |  |  | 		-l|-last|--last) | 
					
						
							|  |  |  | 			LAST=1 | 
					
						
							|  |  |  | 			shift | 
					
						
							|  |  |  | 			;; | 
					
						
							|  |  |  | 		*) | 
					
						
							|  |  |  | 			break | 
					
						
							|  |  |  | 			;; | 
					
						
							|  |  |  | 	esac | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if ! [ -z "$2" ] ; then | 
					
						
							| 
									
										
										
										
											2014-06-24 00:27:49 +04:00
										 |  |  | 	TITLE=" - $2" | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2014-05-26 13:40:18 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-05 04:24:50 +04:00
										 |  |  | DRIVE=${1} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | while true ; do | 
					
						
							|  |  |  | 	if [[ $INTERACTIVE || ! $DRIVE ]] ; then | 
					
						
							|  |  |  | 		INTERACTIVE=1 | 
					
						
							|  |  |  | 		echo "Select/toggle an option:" | 
					
						
							|  |  |  | 		echo "0) Multi flash card mode is `[[ $MULTI ]] && echo "on" || echo "off"`" | 
					
						
							|  |  |  | 		echo "1) Directoy description is: \"$TITLE\"." | 
					
						
							|  |  |  | 		if [[ ! $DRIVE ]] ; then | 
					
						
							| 
									
										
										
										
											2014-08-09 01:42:03 +04:00
										 |  |  | 			echo "a-z) type a drive letter and start." | 
					
						
							| 
									
										
										
										
											2014-08-05 04:24:50 +04:00
										 |  |  | 		else | 
					
						
							| 
									
										
										
										
											2014-08-09 01:42:03 +04:00
										 |  |  | 			echo "a-z) type a new drive letter and start." | 
					
						
							| 
									
										
										
										
											2014-08-05 04:24:50 +04:00
										 |  |  | 			echo "Enter) copy drive ${DRIVE}" | 
					
						
							|  |  |  | 		fi | 
					
						
							|  |  |  | 		echo "2) build." | 
					
						
							|  |  |  | 		echo "3) quit." | 
					
						
							|  |  |  | 		read -p ": " RES | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 		case $RES in | 
					
						
							|  |  |  | 			# toggle multi mode... | 
					
						
							|  |  |  | 			0) | 
					
						
							|  |  |  | 				MULTI=`[[ ! $MULTI ]] && echo 1 || echo ""` | 
					
						
							|  |  |  | 				continue | 
					
						
							|  |  |  | 				;; | 
					
						
							|  |  |  | 			1) | 
					
						
							|  |  |  | 				read -p "new description: " TITLE | 
					
						
							|  |  |  | 				TITLE=" - $TITLE" | 
					
						
							|  |  |  | 				continue | 
					
						
							|  |  |  | 				;; | 
					
						
							|  |  |  | 			# continue with same drive or ask again... | 
					
						
							|  |  |  | 			"") | 
					
						
							|  |  |  | 				if [[ ! $DRIVE ]] ; then | 
					
						
							|  |  |  | 					echo "ERR: need a drive to copy from, no defaults." | 
					
						
							|  |  |  | 					echo | 
					
						
							|  |  |  | 					continue | 
					
						
							|  |  |  | 				fi | 
					
						
							|  |  |  | 				DRIVE=$DRIVE | 
					
						
							|  |  |  | 				;; | 
					
						
							|  |  |  | 			2) | 
					
						
							|  |  |  | 				LAST=1 | 
					
						
							|  |  |  | 				break | 
					
						
							|  |  |  | 				;; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			3) | 
					
						
							|  |  |  | 				exit | 
					
						
							|  |  |  | 				;; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			# new drive letter... | 
					
						
							|  |  |  | 			*) | 
					
						
							|  |  |  | 				DRIVE=$RES | 
					
						
							|  |  |  | 				;; | 
					
						
							|  |  |  | 		esac | 
					
						
							|  |  |  | 	fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	# XXX do a real three digit count... | 
					
						
							|  |  |  | 	# single flash card... | 
					
						
							|  |  |  | 	if [ -z $MULTI ] ; then | 
					
						
							| 
									
										
										
										
											2014-08-02 18:56:28 +04:00
										 |  |  | 		DIR="./- ${DATE}.00${COUNT}${TITLE}/" | 
					
						
							| 
									
										
										
										
											2014-08-05 04:24:50 +04:00
										 |  |  | 		while [ -e "$DIR" ] ; do | 
					
						
							|  |  |  | 			COUNT=$((COUNT+1)) | 
					
						
							|  |  |  | 			DIR="./- ${DATE}.00${COUNT}${TITLE}/" | 
					
						
							|  |  |  | 		done | 
					
						
							|  |  |  | 		BASE_DIR=$DIR | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	# multiple flash cards shoot... | 
					
						
							|  |  |  | 	else | 
					
						
							|  |  |  | 		BASE_DIR="./- ${DATE}${TITLE}/" | 
					
						
							| 
									
										
										
										
											2014-08-02 18:56:28 +04:00
										 |  |  | 		DIR="${BASE_DIR}/${DATE}.00${COUNT}/" | 
					
						
							| 
									
										
										
										
											2014-08-05 04:24:50 +04:00
										 |  |  | 		while [ -e "$DIR" ] ; do | 
					
						
							|  |  |  | 			COUNT=$((COUNT+1)) | 
					
						
							|  |  |  | 			DIR="${BASE_DIR}/${DATE}.00${COUNT}/" | 
					
						
							|  |  |  | 		done | 
					
						
							|  |  |  | 	fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	mkdir -vp "$DIR" | 
					
						
							| 
									
										
										
										
											2014-05-26 13:40:18 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-05 04:24:50 +04:00
										 |  |  | 	echo "Copying files from $1..." | 
					
						
							|  |  |  | 	cp -Rpfv /mnt/${DRIVE}/* "$DIR" | 
					
						
							|  |  |  | 	echo "Copying files: done." | 
					
						
							| 
									
										
										
										
											2014-05-26 13:40:18 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-05 04:24:50 +04:00
										 |  |  | 	# exit interactive mode... | 
					
						
							| 
									
										
										
										
											2014-08-09 01:42:03 +04:00
										 |  |  | 	if [[ ! $MULTI || ! $INTERACTIVE || $LAST ]] ; then | 
					
						
							| 
									
										
										
										
											2014-08-05 04:24:50 +04:00
										 |  |  | 		break | 
					
						
							|  |  |  | 	fi | 
					
						
							|  |  |  | done | 
					
						
							| 
									
										
										
										
											2014-05-26 13:40:18 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-05 04:24:50 +04:00
										 |  |  | if [[ $LAST ]] ; then | 
					
						
							|  |  |  | 	COMMON_FLAG=-c | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2014-05-26 13:40:18 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-02 18:56:28 +04:00
										 |  |  | if [[ ! $MULTI || $LAST ]] ; then | 
					
						
							|  |  |  | 	echo "Building archive..." | 
					
						
							|  |  |  | 	./process-archive.sh $COMMON_FLAG "$BASE_DIR" | 
					
						
							|  |  |  | 	echo "Building archive: done." | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2014-08-05 04:24:50 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 |