Я не понял, что Вы хотите сделать одинаковым, а что разным.
Самый тупой способ:
- сделать каждому свою собственную корневую систему со всем деревом папок;
- общие файлы - жёстко слинковать;
- индивидуальные файлы - каждому свои.
Система получается неимоверно гибкая: каждому клиенту можно выставить собственный набор файлов, который у него общий с остальными. Т.е. можно поставить трём клиентам один файл, пяти други - другой файл, а мест на диске займут два реальных файла.
Цена этой гибкости - муторное администрирование. Муторно потому, что никому раеально такая гибкость не нужна.
Ещё можно посмотреть в сторону UnionFS, которая может подвесить/смонтировать один каталог к другому.
Ещё можно поиграть с симлинками - их можно делать на каталог, а резолвиться они будут на клиентах.
Если файловая система сервера умеет дедуплицирование хотя бы на уровне файлов - то вообще нет проблемы создавать каждому клиенту свой полноценный каталог.
Короче, Вы напишите, какие каталоги заведомо будут общие; какие с высокой вероятностью будут общие; а какие скорее сего будут раздельные. Тогда будет ясно, какой способ выбрать.