Take the 2-minute tour ×
Ask Different is a question and answer site for power users of Apple hardware and software. It's 100% free, no registration required.

I have two folders on two different Volumes:

  • /Volumes/SSD/my-important-folder
  • /Volumes/HDD/my-extension-of-important-folder

In the second folder I put large files and folders so they do not take up all the space on the SSD. In order to have everything in one place I create symlinks from the first to the second folder, like so:

/Volumes/SSD/my-important-folder/big-file is a symlink to /Volumes/HDD/my-extension-of-important-folder/big-file

This is useful because big files get stored on the HDD yet they are available as if they were stored on the SSD. But this has the disadvantage that I have to create a symlink for every file oder folder that I add to the folder on HDD.

It would be really useful if I could say to the OS: if I call a file that is not in /Volumes/SSD/my-important-folder, please look it up in /Volumes/HDD/my-extension-of-important-folder.

The folder on the HDD would then be a real extension of the folder on the SSD.

Can this be done? I am running OS X 10.9.1

share|improve this question
    
Good point, Mark. –  bootsmaat Feb 27 at 9:54
    
Note this scenario is what a fusion drive works well for, the commonly used files will be on SSD and the others on the HD - you can set up fusion drives yourself - see other questions –  Mark Feb 27 at 10:08

3 Answers 3

As far as I know, you can't do that directly but I'm not sure I understand why you'd want to?

Why not just symlink the entire folder and never worry about it going forward?

If it's important to you that it's only large files that are moved to the HDD, you could create a Folder Action in Automator and run a bash script that checked file size and based on that moved and created the symlink automatically (I'm assuming you've got some tech skill since you know what symlink even is :) With that said, I'd be happy to post more detailed instructions if need be).

share|improve this answer
    
I do not want to Symlink the entire folder because as far as I know I will then not be able to have some files available on the SSD and others on the HDD. Thank you for the tip on folder Automation. –  bootsmaat Feb 27 at 9:52

I would look at this in another way.

I would create several folders in the filesystem:

/Volumes/SSD/Data
/Volumes/SSD/ActualDataOnSSD
/Volumes/HDD/ActualDataOnHDD

Then folder actions.

If any data get stored in /Volumes/SSD/Data based on its size and move it to one of the two folders.

If any data get stored in /Volumes/SSD/ActualDataOnSSD or /Volumes/HDD/ActualDataOnHDD, create a symlink for them in /Volumes/SSD/Data.

This seems to satisfy you need, however I do have big concerns when it comes to saving a file that's being moved.

share|improve this answer

Try using a command like this:

ln -s /dir2/* /dir1

ln skips files that exist on the target, and it doesn't recreate existing symlinks.

To run the command when /dir2/ is modified, save for example this plist as ~/Library/LaunchAgents/some.label.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>some.label</string>
  <key>ProgramArguments</key>
  <array>
    <string>bash</string>
    <string>-c</string>
    <string>ln -s /dir2/* /dir1</string>
  </array>
  <key>WatchPaths</key>
  <array>
    <string>/dir2/</string>
  </array>
</dict>
</plist>

Then run launchctl load ~/Library/LaunchAgents/some.label.plist.

share|improve this answer
    
Thanks, Lauri. As far as I can see this would create a Symlink for every file on the SSD, right? I want to be able to choose which files and folders are symlinked. –  bootsmaat Feb 27 at 9:56

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.