find /path/to/dir -name "*" | grep -v "file_to_exclude" | pax -w -d -x ustar | bzip2 > name_of_tar.tar.bz2
Okay this is involved but not too complicated. The find command is going to find every single file in their directory. It will pass that to the grep command, which will remove the lines which match the pattern of the file you don't want (use the whole name and path -- look at the find output to determine what this is -- to make sure you get only it). The grep command pipes all those filenames to pax... which writes an archive. The -d
flag is what is important. It tells pax to match directories but not all the files beneath it. Basically, it says "only archive what I specifically name". In this case I use ustar as my format but you can use whichever makes sense for your users and is supported. I also pass it through bzip2 to compress it as well. This may or may not work for you (if you don't think your users will have bunzip2 or access to a program that will handle it).