I was recently commissioned to migrate a file server for a client from Windows Server 2003 to Windows Server 2008. A straightforward migration, I went ahead with the migration as I usually would, created the shares on the destination (hidden using the $ of course), and set up a script to copy all files, directories, permissions, etc. from the source server to the destination server every night as a scheduled task. I monitored this task, and once it was completing regularly (about 3 days) and I verified things looked good, I scheduled the cutover with the client. I scheduled it for the weekend, starting on a Friday night, I waited for my script to finish running, reconfigured the shares on the source to be hidden, reconfigured the shares on the destination so that they were no longer hidden, adjusted my script accordingly, and ran it one more time to verify there was nothing missed. I verified that all shares were available and all files looked good, and then reconfigured all of the Group Policy login scripts that mapped drives for users with the new server name and verified that on login the new script ran and all files were accessible as expected.
I called it a night at that point, since as far as I could tell, my job was done. For the most part, it was.
Saturday morning rolled around and I got a call, a user was unable to view or access files on the new shares using a program that I was unfamiliar with and the company had neglected to tell me about. We started up a screen-sharing session and I could immediately tell what the problem was. The application was from the very early 90’s, which meant it didn’t support long filenames. Since Microsoft dropped short filename creation in Server 2008 as a default, I was going to have to enable it for the application to work. I let my contact at the company know that the maintenance was going to continue throughout most of the rest of the weekend and got to work.
First off, enable short filename creation. This is not best practices, as it can reduce file server performance, but it was required in this case.
fsutil 8dot3name set 0
Will enable creation of short file names for all new files created on the entire system (see below for additional options for fsutil 8dot3name). The problem (and there is no way around this as far as I know) is that this only will take effect on new files, it will not go back and create short file names for existing files on the volume, so if you’ve already copied all of your data to the volume, you have to find a way to re-copy all of it. I happened to get lucky and have created two logical volumes from my RAID set, one originally created for Microsoft Exchange data and the other for file server data. I was able to, one at a time, copy top-level folders to the other logical drive and copy them back, creating the short file names. If you do not have that option, or if you have a very large amount of data and a short amount of time to copy it in, it is hard to find an acceptable solution other than switching back to your old server if you can. Although this scares me a bit, (because there is no RAID protection) external hard disks can be an acceptable place to copy data to for a short while and then copy back.
In the end things worked out for me, I was able to get all of the data copied around by Sunday night and Monday morning they were back in business.