Corrupt / Unable to open folders

This morning I installed Cryptomator for Windows 10. I tried to open a vault that was previously accessible by iOS and was created on MacOS. When attempting to open on Windows 10, I get a screen “Your vault needs to be upgraded to a new format, before you can access it” with a button to Upgrade Vault.

So I upgraded one of my vaults as prompted by the Windows 10 client. When opening the vault I do not see the folders within the vault, as I can on iOS. I see files that were not in any of the vault’s folders. When attempting to open a file on Windows 10, they all are corrupt and unable to be opened. Worried I quickly opened the vault on iOS Cryptomator and to my dread when I try to access the folders I get an error! On top of the iOS app I get a exclamation point with a long alpha-numeric string with a red background saying “could not be found”.

I can only conclude that whatever the upgrading of the vault Windows client did corrupted the whole vault! This is devastating, and with all my experience I should have known better and made backups.

Is there a work-around or remedy? If not, years of documents are gone.

Could you please check the upgrade log in %appdata%/Cryptomator/ and post it here? You may redact path names that you find sensitive inside that file.

I can’t upload, as a new user.

Here is a link - https://drive.google.com/file/d/1oVk5CEAv1h-mAFsjH3aeMuRNf14qsotx/view?usp=sharing

Nothing suspicious in the upgrade log. However, we had an incidence with iCloud Drive and Windows the other day and I’d like to verify if that’s the same in your case.

Please open cmd and run these commands.

cd "C:\Users\*REDACTED*~setolabs~Cryptomator\Vault - Documents"
powershell -command "iex \"tree /f\" > \"tree.txt\""

After that, there will be a tree.txt inside your vault. Could you please upload it again? Since all filenames are encrypted, these are not sensitive data. But with that information, I can analyze the vault structure, verify my suspicion, and hopefully come up with a solution.

Thanks for the response again. Here is the tree.txt file.

https://drive.google.com/file/d/1r1ZADEOWISRNhwtSiqB83KB1WiMwK-X_/view?usp=sharing

As I’ve suspected: Even though the MOVEs were successful, the tree.txt shows that some MOVEs didn’t end up there as they should’ve.

Sent you a direct message with further instructions.

Wanted to close this thread out. The issue has been resolve. Thanks!

1 Like

Solution was to transform the upgrade log into MOVE commands so that they can be performed again in a batch script.

Still: It doesn’t make any sense that successful MOVEs weren’t successful. :frowning_face:

1 Like

I have the exact same problem. My upgrade log shows no errors but in my tree.txt I see some old names and paths which should have been moved in new locations. Can you explain how to transform the upgrade log into that batch script? I could move them by hand but there are a lot of folders to move. Thank you.

Let’s say you have an upgrade.log that looks like this:

23:03:24.798 [App Background Thread 005] INFO  o.c.c.migration.v7.Version7Migrator - Upgrading /path/to/vault from version 6 to version 7.
23:03:25.121 [App Background Thread 005] INFO  o.c.c.migration.v7.Version7Migrator - Backed up masterkey from masterkey.cryptomator to masterkey.cryptomator.BF508FF7.bkup.
23:03:25.128 [App Background Thread 005] INFO  o.c.c.migration.v7.Version7Migrator - Underlying file system meets filename length requirements.
23:03:25.133 [App Background Thread 005] INFO  o.c.c.migration.v7.Version7Migrator - Starting migration of 6 files
23:03:25.136 [App Background Thread 005] INFO  o.c.c.migration.v7.MigratingVisitor - MOVED /path/to/vault/d/PU/GMVYWIUWIWIQGQ7VFPCYRBNGALQ3I2/AAWFIWJ7LU676KBHR6573H7M6HKRTGJMWTTCEQXU4DCA==== to /path/to/vault/d/PU/GMVYWIUWIWIQGQ7VFPCYRBNGALQ3I2/ACxUWT9dPf8oJ4-7_Z_s8dUZmSy05iJC9ODE.c9r
23:03:25.136 [App Background Thread 005] INFO  o.c.c.migration.v7.MigratingVisitor - MOVED /path/to/vault/d/PU/GMVYWIUWIWIQGQ7VFPCYRBNGALQ3I2/J6BA7RDFMOWYP2CMS2MBZ6VX525TOZG6BI53QOW3 to /path/to/vault/d/PU/GMVYWIUWIWIQGQ7VFPCYRBNGALQ3I2/T4IPxGVjrYfoTJaYHPq37rs3ZN4KO7g62w==.c9r
23:03:25.138 [App Background Thread 005] INFO  o.c.c.migration.v7.MigratingVisitor - MOVED /path/to/vault/d/PU/GMVYWIUWIWIQGQ7VFPCYRBNGALQ3I2/Y7B5ROYHCMDSKZNQYEMZBDBT6K5FMNRSUTX47LAANO3PKZWA2I====== to /path/to/vault/d/PU/GMVYWIUWIWIQGQ7VFPCYRBNGALQ3I2/x8PYuwcTByVlsMEZkIwz8rpWNjKk78-sAGu29WbA0g==.c9r
23:03:25.410 [App Background Thread 005] INFO  o.c.c.migration.v7.Version7Migrator - Updated masterkey.
23:03:25.410 [App Background Thread 005] INFO  o.c.c.migration.v7.Version7Migrator - Upgraded /path/to/vault from version 6 to version 7.

The goal is to transform that to:

MOVE "/path/to/vault/d/PU/GMVYWIUWIWIQGQ7VFPCYRBNGALQ3I2/AAWFIWJ7LU676KBHR6573H7M6HKRTGJMWTTCEQXU4DCA====" "/path/to/vault/d/PU/GMVYWIUWIWIQGQ7VFPCYRBNGALQ3I2/ACxUWT9dPf8oJ4-7_Z_s8dUZmSy05iJC9ODE.c9r"
MOVE "/path/to/vault/d/PU/GMVYWIUWIWIQGQ7VFPCYRBNGALQ3I2/J6BA7RDFMOWYP2CMS2MBZ6VX525TOZG6BI53QOW3" "/path/to/vault/d/PU/GMVYWIUWIWIQGQ7VFPCYRBNGALQ3I2/T4IPxGVjrYfoTJaYHPq37rs3ZN4KO7g62w==.c9r"
MOVE "/path/to/vault/d/PU/GMVYWIUWIWIQGQ7VFPCYRBNGALQ3I2/Y7B5ROYHCMDSKZNQYEMZBDBT6K5FMNRSUTX47LAANO3PKZWA2I======" "/path/to/vault/d/PU/GMVYWIUWIWIQGQ7VFPCYRBNGALQ3I2/x8PYuwcTByVlsMEZkIwz8rpWNjKk78-sAGu29WbA0g==.c9r"
PAUSE

I did the following to achieve that using a text editor that is able to find & replace via regular expressions:

  1. Delete every line that has nothing to do with the actual MOVE operations. In my case, it were the first 4 lines and the last 2 lines.
  2. Find .*MOVED (.*) to (.*) and replace with MOVE "$1" "$2" (as I’ve mentioned, using regular expressions).
  3. Add PAUSE at the end. It’s not necessary but I found it useful so that you can look through the tool if you notice any errors or anything like that.
  4. Save file as upgrade.bat or anything else with a bat suffix.
1 Like

Thank you for that detailed explanation! It worked perfectly. I did it with notepad++ in case someone else got the same problem.

1 Like

not tried the solutions but same error here…

I think you should rework the upgrade

ok… I can’t find an upgrade.log on Mac… this is where I made the upgrade.

Any hints for me? Cant access my Vault on iOS Win and Mac right now…

Should be here:

Ok, for Mac Users… MOVE, of course, doesn’t work…

Either use mv oder make an alias ( alias MOVE=‘mv’ )
Also change " to ’

But…

All my files ARE moved to c9r… and the filenames in the log dont exist anymore. So I get a “file not found”.

error when opening…

[webdav-015] WARN o.c.cryptofs.CryptoPathMapper - Did not find valid content inside of

and the c9r are directories AND files… is that right?

there should be some dir.c9r
like
MOVE “…/d/UQ/LFF7GZ2OOBJKCOHHDZPQCMI7BMG272/0TLAODBUO5F6GRBQIERIXA6WOR6SLXUQPGA3AWMECLJLA====” “…/d/UQ/LFF7GZ2OOBJKCOHHDZPQCMI7BMG272/msDhho7pfGiGCCRRcHrOj6S70g8wNgswglpW.c9r/dir.c9r”

but it went to…
…/d/UQ/LFF7GZ2OOBJKCOHHDZPQCMI7BMG272/msDhho7pfGiGCCRRcHrOj6S70g8wNgswglpW.c9r/0TLAODBUO5F6GRBQIERIXA6WOR6SLXUQPGA3AWMECLJLA====

I also got some dir(5).c9r / dir(1) dir(2)… files…

so something went VERY wrong on Mac I suppose

ok… it’s up again… what I did…

shell script for repairing that mess with c9r folders

take your worked upgrade file for that like described above

./repair.sh upgrade.sh

#!/bin/bash
pat='MOVE "(.*)" "(.*)"'
upgradefile=$1
echo $upgradefile
while read -r line;
do
#       echo $line
        [[ $line =~ $pat ]]
        src=${BASH_REMATCH[1]}
        dst=${BASH_REMATCH[2]}
        echo $src
        echo $dst
        srcp=${src%/*}
        srcf=${src##*/}
#       echo $srcp
#       echo $srcf

 

        dstp=${dst%/*}
        dstf=${dst##*/}
#       echo $dstp
#       echo $dstf

 

        if [[ -f $dst || -d $dst ]]
        then
                continue
        fi

 

        if [[ -f $src || -d $src ]]
        then
          srca=$src
        else
          srca=$(find /Users/--/--/--/--/00100_Secure -name $srcf)
        fi
        if [[ -z $srca ]]
        then
                echo NF $src
                continue
        fi
        echo MKDIRP $dstp
#       mkdir -p $dstp
        echo MOVED $srca to $dst
#       mv $srca $dst
done < $upgradefile

second… rename the dir(8).c9r files

#!/bin/bash


find . -name 'dir(*).c9r' -print0 | while read -r -d $'\0' line;
do 
	path=${line%/*}
	mv $line $path/dir.c9r
done

et voila… files are back again…

I still have some WARN o.c.c.dir.BrokenDirectoryFilter - Broken directory file but that’s ok for me… ill get some missing files out of an older backup

but I’m still disappointed that this happened… reminds me not to update software to soon…

Good information thanks for sharing

[redbear-ger],

I’ve tried but it doesnt work…

/Library/Logs/Cryptomator/repair.sh: line 49: $upgradefile: ambiguous redirect

Can you help, please?

what does your upgrade file looks like?

first file is the 1st script (I called it repair.sh) and second one is your upgrade file (doesn’t need to be .sh)

so you call it like ./repair.sh upgradefile

should be both in the same directory (I had them on desktop)