Apr 04

Here at the school district I was running into a problem where if several Mac OS X wireless clients logged into the network at once, everything slowed down to a crawl. After researching the problem, it looked like the user’s Library and Microsoft User Data folders were causing the problem. I tried turning on OS X’s home folder syncronization, but that didn’t work very well, and filled up our older computers fast. The solution I found was to locally cache the user’s Library and Microsoft User Data folder. To do this, create a symbolic link from the user’s networked ‘Library’ folder and point it to a local source. I chose /tmp/UserCache/username/Library. Here is the login script I created to automate the process:

#! /bin/bash

# Create local user caches of important directories
# Written by Steven Eppler 04/04/2006

export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin

# Set user variable

# This grabs the user's home directory server
input=`dscl localhost read Search/Users/$user NFSHomeDirectory`

# Or you can hardcode it...
# nethomedir="/Network/Servers/ServerName/Volume/$user"

# Check for blank nethomedir - otherwise you will delete
# the root /Library folder!
if [ """$nethomedir""" != "" ]; then

echo $user
echo $nethomedir

# Create local caching directories
mkdir /tmp/UserCache
mkdir /tmp/UserCache/$user
mkdir /tmp/UserCache/$user/Microsoft\ User\ Data
mkdir /tmp/UserCache/$user/Library

# Give everyone rights to them...
chmod -R ugo=rwx /tmp/UserCache

# Create Documents and Desktop folder (sometimes they don't exist)
mkdir $nethomedir/Documents
mkdir $nethomedir/Desktop

# Delete old folders or links
rm -rf $nethomedir/Library
rm -rf $nethomedir/Documents/Microsoft\ User\ Data

# Create new links
ln -s /tmp/UserCache/$user/Library $nethomedir/Library
ln -s /tmp/UserCache/$user/Microsoft\ User\ Data $nethomedir/Documents/Microsoft\ User\ Data


written by eppler

3 Responses to “Locally Cache Mac OS X Network Login Folders”

  1. Kevin Shain Says:

    Hi, long shot here since it looks like you haven’t done a blog entry in a while, but how do do a login script for OS X when using a Win2003 server?

  2. eppler Says:

    You won’t be able to send one down from Win2003 (as far as I know) but you can create local scripts by creating a login hook.

    A program to easily create a login hook can be found here:




  3. Karl Says:

    Ok, I am an idiot, how do I use this?

Leave a Reply