How To: Store iMovie ’09 Events and Projects on a Network Volume (NAS)

Purpose: while iMovie ’09 allows you to store your events and projects on physically attached hard drives (external or internal) it doesn’t offer an out-of-the-box way to store them on a network attached storage (NAS) device. I have a file serve and I want to use it.

how to set it up

The only way I have found to circumvent this annoyance is to play a little trick on iMovie. And that trick is to move the original ~/Movies folder under a different name and put a symlink in its place (to the network folder of your choice).

Here are the steps I took from the Terminal to do this (you will need to have Administrator privileges and you will need to know where your network folder is attached):

  • sudo mv ~/Movies/ ~/Movies-original
  • ln -s /Volumes/my-network-volume/Movies/ ~/Movies

Now, when I load up iMovie it will use the networked volume. If you don’t like this, you can always move your ~/Movies-original folder back where it was.

remaining issues

Unfortunately, this isn’t a perfect fix. There are two caveats or issues I have found.

One, is that now my hard drive (called Papa Bear) is listed twice in the Project Library:

And two, is that when you delete an event or project from within iMovie, it moves the project into a temporary folder rather than actually deleting it. The next time you open iMovie, it will show up again. I’m sure this is because it thinks it is working with a bona fide Trash system but its not (because it is network storage. See this example:

In order to get around this annoyance, I created a Python script which removes the temporary files for me and created a cron job to run the script from time to time (cleaning up the mess iMovie leaves behind).

#!/usr/bin/env python
'''
Simple script to remove all directories that match the name:
    /iMovie Temporary Items */  [note the star!]

'''
import os
import fnmatch
import shutil

# tuple of directories to search through (you can add more than one)
DIRS = ('/Volumes/leaker-damon/tps/Videos/',)

for directory in DIRS:
    for root, dirnames, filenames in os.walk(directory):
        for directory in dirnames:
            if fnmatch.fnmatch(directory,'iMovie Temporary Items *'):
                shutil.rmtree(os.path.join(root,directory))

make this more better

Am interested to hear how other people have been handling this — this approach certainly isn’t perfect, but it seems to work (for now).

8 Comments (newest first)

  1. Alitza says:

    Worked like charm! Thank You!!

  2. Andrew says:

    I unfortunately just cut a pasted you terminal steps forgetting to put in my NAS now can’t import in IMovie can you tell me how to put it back

    Thanks

    • Damon says:

      If you really just followed the cut and paste, what you can do to reverse it is delete the symbolic link (which is dead) and move your old folder back:

      • rm ~/Movies
      • sudo mv ~/Movies-original ~/Movies

      You may want to check that you have a symbolic link in lieu of a folder before you remove it (you can us ls -l to see where it’s linked to).

      HTH

  3. Kevin says:

    Is there a way to modify your commands to allow iMovie to save to “the logged in users” network storage? I am trying to use a local account for students with a mounted network folder – but am experiencing ALOT of grief with iMovie! Students will reboot the computer when they log out (possibly using Deep Freeze to restore to “clean slate” for next student) and while dragging files works for documents – iMovie is a real stopping point for us. Any help/thoughts would be appreciated

    • Damon says:

      Hi Kevin – I am not really sure I understand how your systems are setup. I am not familiar with “the logged in users” network storage … do you mean that when a student logs in a network storage icon is mounted for that user?

      As I understand it, iMovie only utilizes the user’s Movies folder, which is located at: /Users/username/Movies. If your Movies folder is on the local hard drive, then you will probably still need to symlink it to the student’s network storage folder. If you are using Deep Freeze, you’ll have to set it not to erase those changes.

      Hope that helps.

      • Kevin says:

        We are looking at moving to this arrangement – no decision has been made yet – but it is looking like…
        A student would sit down at a workstation (desktop or laptop) and log into a generic Student account.
        So to access their network account they would have to click on a link on their desktop and enter their individualized login information. So each time someone sits at the workstation they will log into the same local “student” account with the same password. The goal is to not have any files lingering on the machines but have all info stored on the network.
        I just don’t think its workable – without utilizing external storage for iMovie!

        • Damon says:

          Yea – I think the issue will be that if that students are sharing a local machine, there is no way to predict the name of the network volume that is being mounted (I would assume it will change depending on the student mounting it). However, if all network volumes get mounted with the same name (eg, /Volumes/shared-storage/Movies) then you could still do this.

          Otherwise, another option may be to delete the ~/Movies folder on the local machine and have a script that both logs in your user to her network storage and, after that’s done, creates the symlink for the ~/localuser/Movies to the network storage …