#!/bin/bash
#                       /usr/local/bin/syncsd
# https://crystalfaeries.net/posix/bin/syncsd
# celeste:crystalfaery SYNCSD 2021-05-02 07:00:02+00:00
# https://crystalfaeries.net/imgs/clipart/landscape/webmichl_sd-card.png
# synchronize fey.crystalfaeries.net's data with whichever {microSD in adapter for ,} SD card is plugged-in to /dev/mmcblk
usergroup="celeste:staff"	# who owns the backup device + data?

cd -P "${HOME}"	# there's no place like /home/`whoami`: CONFIGURE TO YOUR PARTITIONING SCHEME:
let	 hd_full=$(df --full	| grep /dev/mapper/fae--vg-home	| sed 's/\%.*$// ; s/^.* //')
echo	"HD_full=${hd_full}%"	# in PerCent, how full is this HD?

# we are only looking at 0th SD card slot, and only at 1st partition
uuid="$(ls -FlaR /dev/disk/by-uuid/	| \
	grep mmcblk0p1			| \
	sed 's/ -> .*$// ; s/^.* //')"	# configure to your partitioning scheme mmcblk"{disk_drive_number_from_0}"p"{partition_number_from_1}
echo "uuid=${uuid}"	#	we have a theoretically Universally UNIQUE ID, yet eye witness that
			#	my Panasonic Lumix Camera formats each SD card with the same ID
case	  "${uuid}" in

03759d15-9f4c-4dcd-8b6e-5c7fc4a1c683 |\
32ca51a6-a8b8-46cb-9c15-f4bd8e352910 |\
4896002f-09bc-4b85-a267-96924c5c55e4 |\
95457e22-3046-4600-80cd-d1a0a9ebd0ba |\
b0dd5113-611c-4622-9bbf-b4ba798b7bc0 |\
bcb3f3d3-d90b-4691-84e5-a51562409f59 |\
c4ef92a0-d118-4504-92c8-2a4a58259967 |\
ddfacfa9-72da-4f1a-9e8a-ae227dc1e0bf )
	echo	"SD card:"
	if	$( grep	mmcblk0p1		/etc/mtab > /dev/null 2>&1 )
	then
		echo	"`grep	mmcblk0p1	/etc/mtab`"	# we seem to be mounted already?
	else
		echo	"`grep	mmcblk0p1	/proc/partitions`"	# we are not mounted?
	sudo	mkdir	-p				  /media/`whoami`/"${uuid}"	&&	\
	sudo	chown	`whoami`:			  /media/`whoami`/"${uuid}"
	sudo	fsck	-t ext4				/dev/disk/by-uuid/"${uuid}"	&&	\
	sudo	mount	-t ext4 -o errors=remount-ro	/dev/disk/by-uuid/"${uuid}"		\
							  /media/`whoami`/"${uuid}"	|| exit $?
	fi

	let sd_full=$(df --full | grep "${uuid}" | sed 's/\%.*$// ; s/^.* //')
	echo	 "SD_full=${sd_full}%"	# in PerCent, how full is this SD card?
	if [	${sd_full}	-ge	95	]
	then	# outa space on SD card so exclude audio backup
 		echo -n	"Backing-Up ONLY website NON-AUDIO contents to SD Card..."

		#	WE ACCUMULATE .dar BACKUPS OF  FEY
		chown -R ${usergroup}						\
				/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			# correct permissions
		chmod 2775	/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			# correct permissions
		rsync -auvH	"${HOME}"/crystalfaeries.net/fey.crystalfaeries.net/*			\
				/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			# accumulate .dar backups until manual	intervention
		find		/media/`whoami`/"${uuid}"/fey.crystalfaeries.net/ -name '*.dar' -size 0 -exec rm {} \;	# deletions propogated
		find "${HOME}"/crystalfaeries.net/fey.crystalfaeries.net/ -mtime +90  -name '*.dar' -size 0 -exec rm {} \;	# deletions propogated
		rsync -auvH	/media/`whoami`/"${uuid}"/fey.crystalfaeries.net/*			\
				"${HOME}"/crystalfaeries.net/fey.crystalfaeries.net			# accumulate .dar backups until auto	 intervention
		chown -R ${usergroup}						\
				/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			# custom local user and group
		chmod 2775	/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			# correct permissions

		# backup without deleting posix (which may have been a symlink)
		if [ -L	/media/`whoami`/"${uuid}"/posix ]
		then
		  rm	/media/`whoami`/"${uuid}"/posix	# clear symlink out of the way
		  mkdir	/media/`whoami`/"${uuid}"/posix	# ensure directory is present
		fi
		rsync	-auvH		/usr/local/{.??,}*					\
			--exclude	games/tor-browser_en-US					\
			--exclude	games/avidemux_2.7.4					\
			--exclude	games/avidemux						\
			--exclude	games/avidemux_2.7.4/					\
			--exclude	games/dnsbench.exe					\
			--exclude	games/firestorm					\
			--exclude	games/hotspotd/						\
			--exclude	games/idserve.exe					\
			--exclude	games/leaktest.exe					\
			--exclude	games/opensim						\
			--exclude	games/opensim-0.9.1.1/					\
			--exclude	games/phoenix						\
			--exclude	games/phoenix_firestormos-release_i686_6.0.2.56680/	\
			--exclude	games/securable.exe*					\
			/media/`whoami`/"${uuid}"/posix/ # backup posix except these games (Non Debian)
			#		We trust we can re-download from the internet in case of loss.
			#	Oh, Really?
			#		Well, umm... we might beleive ourselves if we can list URLs :-)
			#	The .exe's are downloaded from Steve Gibson's website(s).

		# BACKUP withOUT deleting ALL BUT audio and some tansients:
#		rsync --delete	-auvH							\
		rsync		-auvH							\
			--exclude=audio							\
			--exclude=documents						\
			--exclude=fey.crystalfaeries.net							\
			--exclude=posix							\
			--exclude=video/dr_selfridge/					\
			--exclude=video/flute/flute_fundamentals_hd-wvwrzo2_r_q.mp4	\
			--exclude=video/nina_perlove/					\
			--exclude=video/security_now/					\
			"${HOME}"/crystalfaeries.net/{.??,}*				\
			/media/`whoami`/"${uuid}/"

		#	KEEP AUDACITY
		find		"${HOME}"/celeste/audio/audacity/			\
			/media/`whoami`/"${uuid}"/audio/audacity			\
			-type f	\! -links 1	-exec unhardlink {} \;
		find 		/media/`whoami`/"${uuid}"/				\
			-type f -size 0	-exec rm {} \;
		rsync -auvH								\
			--exclude=.audacity/.audacity-data/AutoSave			\
			--exclude=.audacity-temp					\
			--exclude=.audacity_temp					\
			--exclude=.audacity-tmp						\
			"${HOME}"/crystalfaeries.net/audio/audacity			\
			   /media/`whoami`/"${uuid}"/audio/		# backup Audacity from HD to SD
		rsync -auvH								\
			--exclude=.audacity/.audacity-data/AutoSave			\
			--exclude=.audacity-temp					\
			--exclude=.audacity_temp					\
			--exclude=.audacity-tmp						\
			   /media/`whoami`/"${uuid}"/audio/audacity/*			\
			"${HOME}"/crystalfaeries.net/audio/audacity/	# backup Audacity from SD to HD
		pushd		/media/`whoami`/"${uuid}"
    			fdedupe -f
		popd
		pushd		/home/`whoami`/crystalfaeries.net/
    			fdedupe -f
		popd
		find	"${HOME}"/crystalfaeries.net/audio/audacity/			\
			   /media/`whoami`/"${uuid}"/audio/audacity/			\
			-type f	\! -links 1	-exec unhardlink {} \;
		find 		/media/`whoami`/"${uuid}"/				\
			-type f -size 0	-exec rm {} \;
		df --full

	else	# have space on SD card so backup to it!
		echo -n	"Backing-Up ALL website contents to SD Card..."

		#	WE ACCUMULATE .dar BACKUPS OF  FEY
		chown -R ${usergroup}						\
				/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			# correct permissions
		chmod 2775	/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			# correct permissions
		rsync -auvH	"${HOME}"/crystalfaeries.net/fey.crystalfaeries.net/*			\
				/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			# accumulate .dar backups until manual	intervention
		find		/media/`whoami`/"${uuid}"/fey.crystalfaeries.net/ -name '*.dar' -size 0 -exec rm {} \;	# deletions propogated
		find "${HOME}"/crystalfaeries.net/fey.crystalfaeries.net/ -mtime +90  -name '*.dar' -size 0 -exec rm {} \;	# deletions propogated
#		rsync -auvH	/media/`whoami`/"${uuid}"/fey.crystalfaeries.net/*			\
#				"${HOME}"/crystalfaeries.net/fey.crystalfaeries.net			# accumulate .dar backups until auto	 intervention
		chown -R ${usergroup}						\
				/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			# correct permissions
		chmod 2775	/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			# correct permissions

		# backup with deleting posix (which may have been a symlink)
		if [ -L	/media/`whoami`/"${uuid}"/posix ]
		then
		  rm	/media/`whoami`/"${uuid}"/posix	# clear symlink out of the way
		  mkdir	/media/`whoami`/"${uuid}"/posix	# ensure directory is present
		fi
		rsync	-auvH		/usr/local/{.??,}*				\
			--exclude	games/tor-browser_en-US				\
			--exclude	games/avidemux_2.7.4				\
			/media/`whoami`/"${uuid}"/posix/ # backup posix

#		# backup withOUT deleting all but audio and some tansients:
#		rsync --delete	-auvH							\
		rsync		-auvH							\
			--exclude=audio							\
			--exclude=documents						\
			--exclude=fey.crystalfaeries.net							\
			--exclude=posix							\
			--exclude=video/dr_selfridge/					\
			--exclude=video/flute/flute_fundamentals_hd-wvwrzo2_r_q.mp4	\
			--exclude=video/nina_perlove/					\
			--exclude=video/security_now/					\
			"${HOME}"/crystalfaeries.net/{.??,}*				\
			/media/`whoami`/"${uuid}"/

		# create DIRECTORY TREE both on local hard drive and on each removable backup / library "disk".
		for d in $( cat	"${HOME}"/crystalfaeries.net/audio/.crystalfaeries.dirs.audio.txt )
		do
			mkdir -p	"${HOME}"/crystalfaeries.net/"${d}"	/media/celeste/"${uuid}"/"${d}"
		done
		
		# backup and restore AUDIO FILES referenced in website:
		for f in $( cat	"${HOME}"/crystalfaeries.net/audio/.crystalfaeries.files.audio.txt )
		do
		#	BACKUP:
		echo   "rsync -auvH "${HOME}"/crystalfaeries.net/${f}	/media/celeste/"${uuid}"/${f}"
			rsync -auvH "${HOME}"/crystalfaeries.net/"${f}"	/media/celeste/"${uuid}"/"${f}"
		#	RESTORE:
		echo   "rsync -auvH /media/celeste/"${uuid}"/${f}	"${HOME}"/crystalfaeries.net/${f}"
			rsync -auvH /media/celeste/"${uuid}"/"${f}"	"${HOME}"/crystalfaeries.net/"${f}"
		done

		#	KEEP AUDACITY
		find	"${HOME}"/crystalfaeries.net/audio/audacity/			\
			   /media/`whoami`/"${uuid}"/audio/audacity/			\
			-type f	\! -links 1	-exec unhardlink {} \;
		find 		/media/`whoami`/"${uuid}"/				\
			-type f -size 0	-exec rm {} \;
		rsync -auvH								\
			--exclude=.audacity/.audacity-data/AutoSave			\
			--exclude=.audacity-temp					\
			--exclude=.audacity_temp					\
			--exclude=.audacity-tmp						\
			"${HOME}"/crystalfaeries.net/audio/audacity/*			\
			   /media/`whoami`/"${uuid}"/audio/audacity/	# backup Audacity from HD to SD
		rsync -auvH								\
			/media/`whoami`/"${uuid}"/audio/audacity/*			\
			--exclude=.audacity/.audacity-data/AutoSave			\
			--exclude=.audacity-temp					\
			--exclude=.audacity_temp					\
			--exclude=.audacity-tmp						\
			"${HOME}"/crystalfaeries.net/audio/audacity/	# backup Audacity from SD to HD
		pushd		/media/`whoami`/"${uuid}"
    			fdedupe -f
		popd
		pushd		/home/`whoami`/crystalfaeries.net/
    			fdedupe -f
		popd
		find	"${HOME}"/crystalfaeries.net/audio/audacity/			\
			   /media/`whoami`/"${uuid}"/audio/audacity/			\
			-type f	\! -links 1	-exec unhardlink {} \;
		find 		/media/`whoami`/"${uuid}"/				\
			-type f -size 0	-exec rm {} \;
		df --full
		rsync -auvH	"${HOME}"/documents	/media/`whoami`/"${uuid}"	# backup documents
		df --full
	fi
	pushd	/media/`whoami`/"${uuid}"
	    fdedupe -f
	popd
	find	/media/`whoami`/"${uuid}"/audio/audacity/				\
	     "${HOME}"/crystalfaeries.net/audio/audacity/				\
			-type f	\! -links 1	-exec unhardlink {} \;
	find	/media/`whoami`/"${uuid}"/						\
			-type f -size 0	-exec rm {} \;
	df --full

	if [	${hd_full}	-ge	$(head -n 1 /etc/restorelimit)	]
	then	# outa space on HD so fdedupe
		echo	"HD is Full."
		pushd		"${HOME}"/crystalfaeries.net/
	    		fdedupe -f
		popd
		find		/media/`whoami`/"${uuid}"/audio/audacity/		\
				"${HOME}"/crystalfaeries.net/audio/audacity/		\
			-type f	\! -links 1	-exec unhardlink {} \;
		find 		/media/`whoami`/"${uuid}"/				\
			-type f -size 0	-exec rm {} \;
		df --full

	else	# have space on HD so download to it!
		# now incrementally unbackup audio directories by size
		echo	"Incrementally Retrieving AUDIO directories by size."
		for d in $( find /media/`whoami`/"${uuid}"/audio/ -mindepth 1 -maxdepth 1 -type d -exec du -s {} \;	| \
			sort -n | cut -f2- )
		do
			echo	"${d}"
			rsync -auvH	"${d}"	"${HOME}"/crystalfaeries.net/audio
			let hd_full=$(df --full | grep /dev/mapper/fae--vg-home | sed 's/\%.*$// ; s/^.* //')
			echo "HD_full=${hd_full}"
			if [	${hd_full}	-ge	$(head -n 1 /etc/restorelimit)	]
			then
				echo	"HD is Full."
				pushd		"${HOME}"/crystalfaeries.net/
				    fdedupe -f
				popd
				find		/media/`whoami`/"${uuid}"/audio/audacity/		\
						"${HOME}"/crystalfaeries.net/audio/audacity/		\
					-type f	\! -links 1	-exec unhardlink {} \;
				find 		/media/`whoami`/"${uuid}"/				\
					-type f -size 0	-exec rm {} \;
				df --full
				exit	$?
			fi
		done
	fi
	exit	$?
	;;

ZZ-Top )
	echo	"16GB SD card is slow to write."
	if	$( grep	/dev/mmcblk0p1	/etc/mtab > /dev/null 2>&1)
	then
		echo	"`grep	/dev/mmcblk0p1	/etc/mtab`"	# we seem to be mounted already?
	else
		echo	"`grep	/dev/mmcblk0p1	/proc/partitions`"	# we are not mounted?
	sudo	mkdir	-p				  /media/`whoami`/"${uuid}"	&&	\
	sudo	chown	`whoami`:			  /media/`whoami`/"${uuid}"
	sudo	fsck	-t ext4				/dev/disk/by-uuid/"${uuid}"	&&	\
	sudo	mount	-t ext4 -o errors=remount-ro	/dev/disk/by-uuid/"${uuid}"		\
							  /media/`whoami`/"${uuid}"	|| exit $?
	fi

	#	WE ACCUMULATE .dar BACKUPS OF  fey.crystalfaeries.net
	chown -R ${usergroup}						\
			/media/`whoami`/"${uuid}"/fey.crystalfaeries.net/	# correct permissions
	chmod 2775	/media/`whoami`/"${uuid}"/fey.crystalfaeries.net/	# correct permissions
	rsync -auvH	"${HOME}"/crystalfaeries.net/fey.crystalfaeries.net/*	\
			/media/`whoami`/"${uuid}"/fey.crystalfaeries.net	# accumulate .dar backups until manual	intervention
	find		/media/`whoami`/"${uuid}"/fey.crystalfaeries.net/ -name '*.dar' -size 0 -exec rm {} \;	# deletions propogated
	find "${HOME}"/crystalfaeries.net/fey.crystalfaeries.net/ -mtime +90  -name '*.dar' -size 0 -exec rm {} \;	# deletions propogated
	rsync -auvH	/media/`whoami`/"${uuid}"/fey.crystalfaeries.net/*	\
			"${HOME}"/crystalfaeries.net/fey.crystalfaeries.net	# accumulate .dar backups until auto	 intervention
	chown -R ${usergroup}							\
			/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			# correct permissions
	chmod 2775	/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			# correct permissions

	#	Backup WITH DELETING posix (which may have been a symlink)
	if [ -L		/media/`whoami`/"${uuid}"/posix ]
	then
	  rm		/media/`whoami`/"${uuid}"/posix	# clear symlink out of the way
	  mkdir -p	/media/`whoami`/"${uuid}"/posix	|| exit 2 # ensure directory is present
	fi
	rsync	-auvH		/usr/local/{.??,}*					\
		--exclude	games/avidemux_2.7.4/					\
		--exclude	games/blender_cloud/					\
		--exclude	games/dnsbench.exe					\
		--exclude	games/firestorm						\
		--exclude	games/idserve.exe					\
		--exclude	games/leaktest.exe					\
		--exclude	games/opensim						\
		--exclude	games/opensim-0.9.1.1/					\
		--exclude	games/phoenix						\
		--exclude	games/phoenix_firestormos-release_i686_6.0.2.56680/	\
		--exclude	games/securable.exe					\
		--exclude	games/tor-browser_en-US					\
		/media/`whoami`/"${uuid}"/posix # backup posix

	#	Backup withOUT DELETING All But audio and some tansients:
#	rsync	-auvH --delete								\
	rsync	-auvH									\
		--exclude=audio								\
		--exclude=documents							\
		--exclude=fey.crystalfaeries.net					\
		--exclude=posix								\
		--exclude=video/ashayana_deane/						\
		--exclude=video/dr_selfridge/						\
		--exclude=video/flute/flute_fundamentals_hd-wvwrzo2_r_q.mp4		\
		--exclude=video/nina_perlove/						\
		--exclude=video/security_now/						\
			"${HOME}"/crystalfaeries.net/{.??,}*				\
	  		/media/`whoami`/"${uuid}"	# Backup website contents except audio + some videos
	pushd		/media/`whoami`/"${uuid}"
	    fdedupe -f
	popd

	#	KEEP AUDACITY
	find				  "${HOME}"/crystalfaeries.net/audio/audacity/	\
			/media/`whoami`/"${uuid}"/audio/audacity/			\
		-type f	\! -links 1	-exec unhardlink {} \;
	find 		/media/`whoami`/"${uuid}"/					\
		-type f -size 0	-exec rm {} \;
	rsync -auvH									\
				"${HOME}"/crystalfaeries.net/audio/audacity		\
			--exclude=.audacity/.audacity-data/AutoSave			\
			--exclude=.audacity-temp					\
			--exclude=.audacity_temp					\
			--exclude=.audacity-tmp						\
			/media/`whoami`/"${uuid}"/audio			# backup Audacity from HD to SD
	rsync -auvH									\
					/media/`whoami`/"${uuid}"/audio/audacity	\
			--exclude=.audacity/.audacity-data/AutoSave			\
			--exclude=.audacity-temp					\
			--exclude=.audacity_temp					\
			--exclude=.audacity-tmp						\
			/home/celeste/crystalfaeries.net/audio/		# backup Audacity from SD to HD
	pushd		/media/`whoami`/"${uuid}"/
    		fdedupe -f
	popd
	pushd		/home/`whoami`/crystalfaeries.net/
    		fdedupe -f
	popd
	find				  "${HOME}"/crystalfaeries.net/audio/audacity/	\
			/media/`whoami`/"${uuid}"/audio/audacity/			\
		-type f	\! -links 1	-exec unhardlink {} \;
	find 		/media/`whoami`/"${uuid}"/					\
		-type f -size 0	-exec rm {} \;
	df --full
	exit	$?
	;;

CCC1-1C16 | F009-64A5 | 5097-A6EB )
	echo	"Hale Ohana SD card:"
	if	$(	grep	mmcblk0p1	/etc/mtab > /dev/null 2>&1 )
	then
		echo	"`grep	mmcblk0p1	/etc/mtab`"	# we seem to be mounted already?
	else
		echo	"`grep	mmcblk0p1	/proc/partitions`"	# we are not mounted?
	sudo	mkdir	-p				  /media/`whoami`/"${uuid}"	&&	\
	sudo	chown	`whoami`:			  /media/`whoami`/"${uuid}"
	sudo	fsck	-t vfat				/dev/disk/by-uuid/"${uuid}"	&&	\
	sudo	mount	-t vfat -o rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0002,dmask=0002,codepage=437,iocharset=ascii,shortname=mixed,showexec,utf8,flush,errors=remount-ro	\
							/dev/disk/by-uuid/"${uuid}"		\
							  /media/`whoami`/"${uuid}"	|| exit $?
	fi

	let sd_full=$(df --full | grep "${uuid}" | sed 's/\%.*$// ; s/^.* //')
	echo	 "SD_full=${sd_full}"
	if [	${sd_full}	-ge	95	]
	then	# outa space on SD card so exclude audio backup
 		echo -n	"Backing-Up ONLY website NON-AUDIO contents to SD Card..."

		#	WE ACCUMULATE .dar BACKUPS OF  FEY
		mkdir -p	/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			\
						      ${HOME}/crystalfaeries.net/fey.crystalfaeries.net	# correct permissions
		chown -R ${usergroup}						\
				/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			\
			     "${HOME}"/crystalfaeries.net/fey.crystalfaeries.net			# correct permissions
		chmod 2775	/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			\
			     "${HOME}"/crystalfaeries.net/fey.crystalfaeries.net			# correct permissions
		rsync -auvH  "${HOME}"/crystalfaeries.net/fey.crystalfaeries.net/{.??,}*		\
				/media/`whoami`/"${uuid}"/fey.crystalfaeries.net/			# accumulate .dar backups until manual	intervention
		find	   /media/`whoami`/"${uuid}"/fey.crystalfaeries.net/ -name '*.dar'		-size 0 -exec rm {} \;	# deletions propogated
		find	"${HOME}"/crystalfaeries.net/fey.crystalfaeries.net/ -name '*.dar' -mtime +90	-size 0 -exec rm {} \;	# deletions propogated
#		rsync -auvH	/media/`whoami`/"${uuid}"/fey.crystalfaeries.net/{.??,}*		\
#			     "${HOME}"/crystalfaeries.net/fey.crystalfaeries.net/			# accumulate .dar backups until auto  intervention
		chown -R ${usergroup}						\
				/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			# correct permissions
		chmod 2775	/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			# correct permissions

		# backup with deleting posix (which may have been a symlink)
		if [ -L		/media/`whoami`/"${uuid}"/posix ]
		then
		  rm		/media/`whoami`/"${uuid}"/posix	# clear symlink out of the way
		  mkdir -p	/media/`whoami`/"${uuid}"/posix	# ensure directory is present
		fi
		rsync	-auvH		/usr/local/{.??,}*				\
			--exclude	games/tor-browser_en-US				\
			--exclude	games/avidemux_2.7.4				\
			/media/`whoami`/"${uuid}"/posix # backup posix

		# backup withOUT deleting all but audio and some tansients:
#		rsync --delete	-auvH							\
		rsync		-auvH							\
			--exclude=audio							\
			--exclude=documents						\
			--exclude=fey.crystalfaeries.net							\
			--exclude=posix							\
			--exclude=video/dr_selfridge/					\
			--exclude=video/flute/flute_fundamentals_hd-wvwrzo2_r_q.mp4	\
			--exclude=video/nina_perlove/					\
			--exclude=video/security_now/					\
			"${HOME}"/crystalfaeries.net/{.??,}*				\
			/media/`whoami`/"${uuid}"/

		#	KEEP AUDACITY
		find					  "${HOME}"/crystalfaeries.net/audio/audacity/	\
				/media/`whoami`/"${uuid}"/audio/audacity/	\
			-type f	\! -links 1	-exec unhardlink {} \;
		find 		/media/`whoami`/"${uuid}"/			\
			-type f -size 0	-exec rm {} \;
		rsync -auvH				 				\
				"${HOME}"/crystalfaeries.net/audio/audacity		\
			--exclude=.audacity/.audacity-data/AutoSave			\
			--exclude=.audacity-temp					\
			--exclude=.audacity_temp					\
			--exclude=.audacity-tmp						\
				/media/`whoami`/"${uuid}"/audio			# backup Audacity from HD to SD
		rsync -auvH								\
			--exclude=.audacity/.audacity-data/AutoSave			\
			--exclude=.audacity-temp					\
			--exclude=.audacity_temp					\
			--exclude=.audacity-tmp						\
					/media/`whoami`/"${uuid}"/audio/audacity	\
				/home/celeste/crystalfaeries.net/audio/		# backup Audacity from SD to HD
		pushd		/media/`whoami`/"${uuid}"
    			fdedupe -f
		popd
		pushd		/home/`whoami`/crystalfaeries.net/
    			fdedupe -f
		popd
		find					  "${HOME}"/crystalfaeries.net/audio/audacity/	\
				/media/`whoami`/"${uuid}"/audio/audacity/	\
			-type f	\! -links 1	-exec unhardlink {} \;
		find 		/media/`whoami`/"${uuid}"/			\
			-type f -size 0	-exec rm {} \;
		df --full

	else	# have space on SD card so backup to it!
		echo -n	"Backing-Up ALL website contents to SD Card..."

		#	WE ACCUMULATE .dar BACKUPS OF  FEY
		chown -R ${usergroup}						\
				/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			# correct permissions
		chmod 2775	/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			# correct permissions
		rsync -auvH	"${HOME}"/crystalfaeries.net/fey.crystalfaeries.net/*			\
				/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			# accumulate .dar backups until manual	intervention
		find		/media/`whoami`/"${uuid}"/fey.crystalfaeries.net/ -name '*.dar' -size 0 -exec rm {} \;	# deletions propogated
		find "${HOME}"/crystalfaeries.net/fey.crystalfaeries.net/ -mtime +90  -name '*.dar' -size 0 -exec rm {} \;	# deletions propogated
#		rsync -auvH	/media/`whoami`/"${uuid}"/fey.crystalfaeries.net/*			\
#				"${HOME}"/crystalfaeries.net/fey.crystalfaeries.net			# accumulate .dar backups until auto	 intervention
		chown -R ${usergroup}						\
				/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			# correct permissions
		chmod 2775	/media/`whoami`/"${uuid}"/fey.crystalfaeries.net			# correct permissions

		# backup with deleting posix (which may have been a symlink)
		if [ -L	/media/`whoami`/"${uuid}"/posix ]
		then
		  rm	/media/`whoami`/"${uuid}"/posix	# clear symlink out of the way
		  mkdir	/media/`whoami`/"${uuid}"/posix	# ensure directory is present
		fi
		rsync	-auvH		/usr/local/{.??,}*				\
			--exclude	games/tor-browser_en-US				\
			--exclude	games/avidemux_2.7.4				\
			/media/`whoami`/"${uuid}"/posix # backup posix

		# backup withOUT deleting all but audio and some tansients:
#		rsync --delete	-auvH							\
		rsync		-auvH							\
			--exclude=audio							\
			--exclude=documents						\
			--exclude=fey.crystalfaeries.net							\
			--exclude=posix							\
			--exclude=video/dr_selfridge/					\
			--exclude=video/flute/flute_fundamentals_hd-wvwrzo2_r_q.mp4	\
			--exclude=video/nina_perlove/					\
			--exclude=video/security_now/					\
			"${HOME}"/crystalfaeries.net/{.??,}*				\
			/media/`whoami`/"${uuid}"

		# create DIRECTORY TREE both on local hard drive and on each removable backup / library "disk".
		for d in $( cat	"${HOME}"/crystalfaeries.net/audio/.crystalfaeries.dirs.audio.txt )
		do
			mkdir -p	"${HOME}"/crystalfaeries.net/"${d}"	/media/celeste/"${uuid}"/"${d}"
		done
		
		# backup and restore AUDIO FILES referenced in website:
		for f in $( cat	"${HOME}"/crystalfaeries.net/audio/.crystalfaeries.files.audio.txt )
		do
		#	BACKUP:
		echo   "rsync -auvH "${HOME}"/crystalfaeries.net/${f}	/media/celeste/${uuid}/${f}"
			rsync -auvH "${HOME}"/crystalfaeries.net/"${f}"	/media/celeste/"${uuid}"/"${f}"
		#	RESTORE:
		echo   "rsync -auvH /media/celeste/${uuid}/${f}	"${HOME}"/crystalfaeries.net/${f}"
			rsync -auvH /media/celeste/"${uuid}"/"${f}"	"${HOME}"/crystalfaeries.net/"${f}"
		done

		#	KEEP AUDACITY
		find					  "${HOME}"/crystalfaeries.net/audio/audacity/	\
				/media/`whoami`/"${uuid}"/audio/audacity/	\
			-type f	\! -links 1	-exec unhardlink {} \;
		find 		/media/`whoami`/"${uuid}"/			\
			-type f -size 0	-exec rm {} \;
		rsync -auvH								\
			--exclude=.audacity/.audacity-data/AutoSave			\
			--exclude=.audacity-temp					\
			--exclude=.audacity_temp					\
			--exclude=.audacity-tmp						\
				"${HOME}"/crystalfaeries.net/audio/audacity		\
				/media/`whoami`/"${uuid}"/audio			# backup Audacity from HD to SD
		rsync -auvH								\
			--exclude=.audacity/.audacity-data/AutoSave			\
			--exclude=.audacity-temp					\
			--exclude=.audacity_temp					\
			--exclude=.audacity-tmp						\
				/media/`whoami`/"${uuid}"/audio/audacity		\
				"${HOME}"/crystalfaeries.net/audio/		 # backup Audacity from SD to HD
		pushd		/media/`whoami`/"${uuid}"
    			fdedupe -f
		popd
		pushd		/home/`whoami`/crystalfaeries.net/
    			fdedupe -f
		popd
		find					  "${HOME}"/crystalfaeries.net/audio/audacity/	\
				/media/`whoami`/"${uuid}"/audio/audacity/	\
			-type f	\! -links 1	-exec unhardlink {} \;
		find 		/media/`whoami`/"${uuid}"/			\
			-type f -size 0	-exec rm {} \;
		df --full
	fi
	pushd	/media/`whoami`/"${uuid}"
	    fdedupe -f
	popd
	find			/media/`whoami`/"${uuid}"/audio/audacity/	\
				"${HOME}"/crystalfaeries.net/audio/audacity/	\
		-type f	\! -links 1	-exec unhardlink {} \;
	find 		/media/`whoami`/"${uuid}"/				\
		-type f -size 0	-exec rm {} \;
	df --full

	if [	${hd_full}	-ge	$(head -n 1 /etc/restorelimit)	]
	then	# outa space on HD so fdedupe
		echo	"HD is Full."
		pushd		"${HOME}"/crystalfaeries.net/
	    		fdedupe -f
		popd
		find		/media/`whoami`/"${uuid}"/audio/audacity/	\
				"${HOME}"/crystalfaeries.net/audio/audacity/	\
			-type f	\! -links 1	-exec unhardlink {} \;
		find 		/media/`whoami`/"${uuid}"/			\
			-type f -size 0	-exec rm {} \;
		df --full

	else	# have space on HD so download to it!
		# now incrementally unbackup audio directories by size
		echo	"Incrementally Retrieving AUDIO directories by size."
		for d in $( find /media/`whoami`/"${uuid}"/audio -mindepth 1 -maxdepth 1 -type d -exec du -s {} \;	| \
			sort -n												| \
			cut -f2- )
		do
			echo	"${d}"
			rsync -auvH	"${d}"	"${HOME}"/crystalfaeries.net/audio
			let hd_full=$(df --full | grep /dev/mapper/fae--vg-home | sed 's/\%.*$// ; s/^.* //')
			echo "HD_full=${hd_full}"
			if [	${hd_full}	-ge	$(head -n 1 /etc/restorelimit)	]
			then
				echo	"HD is Full."
				pushd		"${HOME}"/crystalfaeries.net/
				    fdedupe -f
				popd
				find		/media/`whoami`/"${uuid}"/audio/audacity/	\
						"${HOME}"/crystalfaeries.net/audio/audacity/	\
					-type f	\! -links 1	-exec unhardlink {} \;
				find 		/media/`whoami`/"${uuid}"/			\
					-type f -size 0	-exec rm {} \;
				df --full
				exit	$?
			fi
		done
	fi
	exit	$?
	;;

		#	NOTICE that: Panasonic Lumix formats all SD cards to carry this  ID
64A5-F009)	#   2GB SD card from Panasonic Lumix DMC-FH20 (more than 1 share this "UUID")
	echo	"2GB SD card from Panasonic Lumix DMC-FH20"
	if	$( grep	/dev/mmcblk0p1	/etc/mtab > /dev/null 2>&1 )
	then
		echo	"`grep	/dev/mmcblk0p1	/etc/mtab` is already mounted."	# we seem to be mounted already?
	else
		echo	"mounting: `ls -FlaR /dev/disk/by-uuid/ | grep mmcblk0p1`"	# get the UUID
		sudo	mkdir	-p				  /media/`whoami`/64A5-F009	&&	\
		sudo	chown	`whoami`:			  /media/`whoami`/64A5-F009
		sudo	fsck	-t vfat				/dev/disk/by-uuid/64A5-F009	&&	\
		sudo	mount	-t vfat	-o rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,showexec,utf8,flush,errors=remount-ro		\
			/dev/disk/by-uuid/64A5-F009	\
			  /media/`whoami`/64A5-F009
		echo	"mounted: `grep	/dev/mmcblk0p1	/etc/mtab`"	# we seem to be mounted already?
	fi

	let sd_full=$(df --full	| grep	64A5-F009 | sed	's/\%.*$// ; s/^.* //')
	echo	 "SD_full=${sd_full}"

	if [	${hd_full}	-le	$(head -n 1 /etc/restorelimit)	]
	then	# have space on HD so download to it!
		rsync -auvH	/media/`whoami`/64A5-F009/*	"${HOME}"/crystalfaeries.net/imgs/journal/
	else
		echo	"We don't have space to download... you wanna get choosier?"
		gwenview	/media/`whoami`/64A5-F009/		# are you sure you wanna delete these?
	fi
	gwenview						"${HOME}"/crystalfaeries.net/imgs/journal/
	sync;sync;sync	# VFATS can be problematical :-(
	     umount						/media/`whoami`/64A5-F009	2>/dev/null	|| \
	sudo umount						/media/`whoami`/64A5-F009
	exit	$?
	;;

*)	# None of our business... yet
	echo -n	"last saw as /dev/mmcblk0p1: "
	if	$( grep	/dev/mmcblk0p1	/etc/mtab > /dev/null 2>&1 )
	then
		echo	"`grep	/dev/mmcblk0p1	/etc/mtab`"	# we seem to be mounted already?
	else
		echo	"`ls -FlaR /dev/disk/by-uuid/ | grep mmcblk0p1`"	# get the UUID
	fi
	exit	$?
	;;

esac
exit	$?
