Skip to main content

Catalog using relative path on external SSD?



  • John Friend
    Top Commenter

    Interesting question I'd like to know too.  On a PC, I guess you could solve it with a common drive letter, but not sure how to do that on a Mac.

  • FirstName LastName

    Yes, that's how I handled it in the past. Now its /Volume/Drive/folder and not the drive letter on Mac. Would be great of there is a solution to that.

  • Robert Farhi

    Wouldn't it be possible to rename your Mac Volume/Drive with the same name as the one on your desktop PC ?

  • OddS.

    > nameless user: ...different file system/structure on Mac

    I don't think it is a question of relative paths or not, but rather about absolute paths. An absolute path, commnly referred to as the root or the root folder, is required as the reference point for a relative path. Together they form an useful absolute (and full) path.

    A Windows path, in Capture One's SQLite database, contains backslash '\' as folder separator character. I guess a Mac path would use forward slash '/'. Windows normally works just fine with '/', but I doubt a Mac works with '\'.

    Provided folder names in a relative path are identical on a Windows system and a Mac system, a relative path 'User\odds\Pictures' stored in the database by Windows Capture One, could be replaced by 'User/odds/Pictures'. It should still work on Windows, and should also work for Capture One on a Mac. Changing separator chars in the database is simple enough, but it will still require attention to do every time a new relative path is updated or added to the database by Windows Capture One.

    Capture One apparently keeps paths in database table zpathlocation that has a column zrelativepath. In my case a realtive path value may look like  'User\odds\Pictures'. Interestingly, that table also has two columns for root folder paths, one column for Windows and one column for Mac. In my case the column zwinroot contains 'C:\' (there is no point in replacing that '\' with a '/' to fit a Mac). The column zmacroot is empty in my database. MacOS is one of the many *nix systems where an absolute path starts with a forward slash ('/').

    I have no idea how the Capture One application would handle a database stating two root paths, one for Windows the other for Mac. Just assume an external image folder 'images\2022' is located at absolute path 'E:\images\2022' when seen from Windows and at path '/mount/externalhd/images/2022' when seen from a Mac.

    Would a Windows root  set to 'E:\' in column zwinroot and a Mac root set to '/mount/externalhd/' work for both systems with zrelativepath set to 'images/2022'?

    There may be some potential here with some scripting and perhaps a few database triggers.

  • John Friend
    Top Commenter


    I don't think it is a question of relative paths or not, but rather about absolute paths

    The general idea was that if there was a way to tell the catalog to store a path that was relative to the catalog (no volume name at all), then folders and catalog could be moved together to a different volume and would not break.  Obviously, you couldn't refer to images on another volume, but that concept could work if your images were on the same volume as the catalog and you can then just connect the drive to different computers and use it.

    But, unfortunately, it appears that C1 doesn't work this way.

  • John Friend
    Top Commenter

    I wonder if this would work if you used a managed catalog instead of a referenced catalog.  Might be worth trying since C1 could keep track of where the images are inside its catalog directory structure regardless of volume name.  In fact, this is one of the things that a managed catalog is for.  Might be worth an experiment.

  • OddS.

    > John Friend: Might be worth an experiment

    Sure, try it out.

    I did put a junk string in column zpathlocation.zmacroot in a couple of my Capture One (Windows) database files. I saw no signs of Capture One reacting on it, and Capture One did not delete it. My guess is that Capture One on a Mac would likewise ignore any string stored in the zpathlocation.zwinroot column and not overwite it.

    I would like you to conduct an experiment along the following lines:

    1) Create a Capture One test catalog on each system, name them "testmac" and "testwin" or some such to not confuse them later.

    2) Import the same set of images to the test catalog on both systems. Images can be located anywhere relative to the catalog, but start simple with images in a single folder. Images in sub folders of that single folder should work too.

    3) Open the testmac.cocatalogdb file in your favorite SQLite3 tool, inspect table zpathlocation and make a note of the string in the zmacroot column. Likewise inspect the testwin.cocatalogdb table zpathlocation and make a note of the string in the zwinroot column.

    4) Open the testmac.cocatalogdb (yes,  in your favorite SQLite3 tool, not in Capture One).  In records where zpathlocation.zmacroot is not empty (zwinroot is empty) set column zpathlocation.zwinroot to the string noted from the testwin database.

    5) On the Windows system, start Capture One with the testmac catalog. If that works, you may be on the way to something useful...

    Assuming it worked, continue with

    6) Open the testwin.cocatalogdb (in your favorite SQLite3 tool).  In records where zpathlocation.zwinroot is not empty (zmacroot is empty) set column zpathlocation.zmacroot to the string noted from the testmac database.

    7) Replace all occurences of characters '\' with '/' in zpathlocation.zrelativepath in all records

    8) On the Mac system, start Capture One with the testwin catalog. If that also works, you are almost there.

    Assuming it worked, you may want to continue with:

    9) Add triggers to the database (use your favorite SQLite3 tool). Whenever a new record in the zpathlocation table is inserted or updated (by Capture One), trigger a SQL statement that will replace an empty root string if the other root string is not empty. Capture One on Windows will leave zmacroot  empty, Capture One on Mac will leave zwinroot empty. Fill in the missing root value (for Mac or Win) , and also replace all '\' with '/' in zrelativepath on that record.

    If it works, test, test and test again, test each system with the testmac and testwin catalog. Take note of all problems and error messages that may indicate that Capture One gets system-confused.

    Edited: Reading my own post I spottet some grave typos (like a meaningless 'zmacwin'). Let me know if more things need my attention.

  • FirstName LastName

    Hi all,
    Thank you for the interesting responses on my question. OddS, you seem to have much knowledge, thanks for these ideas. Unfortunately, I am not that familiar with scripting and don't think i cold make that. Though, maybe some coder for C1 adopt your ideas.

    I also gave a thought about the managed catalog way. However, it seemed to me that there is no "structure" within this type of archive, so i skipped that. Maybe i should give IT another try. In the past, I copied my files via Import function automatically to a path defined in C1 (year/month/day), Would be great of this is possible in a managed catalog too.

    If this doesn't work I think I will simply buy a decent dock for the macbook and simply do not use the Desktop PC anymore for C1. Nevertheless, such a "hybrid" system would be beneficial imho.

  • Derek Ireland


    I was just searching for the same thing.

    Have you considered using a session, instead of a catalog? I have yet to try it, but sessions are self contained with the originals in the same area as all of the metadata and so on. I am not sure if you can have a custom directory structure within the sessions originals folder.


  • OddS.

    > Derek Ireland: ...a session, instead of a catalog?

    I believe the path differences between the two operating systems would still exist.

  • FirstName LastName

    Yes, a Session works as the folders are within the Session folder. However, a Session doesn't have the same features as a catalogue, namely "catalog" a large set of photos. I gave it up and just stick to the macbook and plug it in at the large Monitor if needed instead of switching to the PC - unfortunately.

  • OddS.

    > nameless user: Yes, a Session works as the folders are within the Session folder...

    You probably assume that to be so, but I think it is inaccurate. A session can address images in any folder, session folder sub-folder or not.

    Moreover, the Library->Session Folder is not a folder on disk, it is a link to a folder on disk. By default the Library->Session Folder->Capture Folder links to (or points to) a session sub-folder Capture on disk.

    For some reason Capture One designers chose to include the word folder in three out of four link names, which have confused the matter for some users. By default, the link "Capture Folder" points to that session's folder "Capture" on disk, "Selects Folder" points to folder "Selects"  and "Trash Folder" points to folder "Trash". The "Output Location" link is different (check out processing recipes). The user can modify the session folder links, as in "point the session's Capture Folder to any disk folder you please".

    Some session users prefer to keep all images in one single (dummy) session even if image files spread all over the place on multiple disks. They open their single session and navigate to a system folder containing images imported in C1 or just copied in. Some use the session favorite feature to make selected disk folders accessible in Capture One's Library section.


Please sign in to leave a comment.