What are the symtoms? It's a bit hard to guess where you are going wrong just by looking at the code.
I noticed a minor problem in here:
Code:
case " ${EXCLUDE_FS} " in
# If its excluded do nothing
*" ${FS} "*);;
You are requiring EXCLUDE_FS to have spaces on both sides in order for this to match, but you don't seem to have those spaces up there were you are assigning EXCLUDE_FS. Either expand the "case" code to handle matches at beginning, end, and alone; or add those spaces to the assignment. (The latter is easier, but more likely to go unnoticed by someone who quickly updates the exclude list later.)
The case where you are updating FILESYSTEMS seems needlessly complicated. Adding a space at the beginning of the list if it's empty seems harmless, judging from what you do with it later in the code.
Me, I would turn EXCLUDE_FS into a regular expression, and filter the output of df through egrep, and get rid of that whole blob of code, anyway.
What's the point of exporting all those variables? You're not invoking subcommands which need them, are you?
You seem to lack a dash in front of the option here:
Code:
grep v "refused connection from " | \
Can't see what's wrong with the CPIO part, sorry.
Proper indentation would probably help a bit here, too ...