Search code examples
backup

Error attempting CrashPlan Home restore using PlanC - "Failed to open block manifest for reading"


Background to Plan C

Code42 decided to terminate their "CrashPlan for Home" service. This means that after the shutdown date of October 22, 2018, CrashPlan will delete your backup on their servers, which is to be expected, but much more annoyingly, you will no longer be able to restore CrashPlan backups that you stored locally. Effectively, Code42 is reaching into your computer to break your backups for you.

PlanC is an open source project to enable restore from existing CrashPlan Home backups to be performed.

My Problem

However, when attempting to restore I received an error:

MacBook-Pro:CrashPlanHomeRecovery daniel$ ./plan-c-osx/plan-c --key 07B... --archive ./sg2015/642033544161964565/ --dest ./recovered/ --filename "J:/..." restore
Caching block indexes in memory...
libc++abi.dylib: terminating with uncaught exception of type std::runtime_error: Failed to open block manifest for reading: ./sg2015/642033544161964565/cpbf0000000000017581637/cpbmf
Abort trap: 6

The file referenced in the error appears to read OK, but the reported error provided no more information.


Solution

  • I reported this GitHub Issue #9.

    I then made a minor change to the error reporting GitHub Pull Request #10 to work out that the error was a Too many open files error:

    MacBook-Pro:CrashPlanHomeRecovery daniel$ ./plan-c-osx/plan-c --key 07B... --archive ./sg2015/642033544161964565/ --dest ./recovered/ --filename "J:/..." restore
    Caching block indexes in memory...
    libc++abi.dylib: terminating with uncaught exception of type std::runtime_error: Failed to open block manifest (../../sg2015/642033544161964565/cpbf0000000000017581637/cpbmf) for reading: Too many open files
    Abort trap: 6
    

    Just a note that if my pull request (only just submitted) is not merged (and a new binary released) you will need to build from my fork.

    Which I then fixed with a ulimit change:

    MacBook-Pro:PlanC daniel$ ulimit -a
    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    file size               (blocks, -f) unlimited
    max locked memory       (kbytes, -l) unlimited
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 256
    pipe size            (512 bytes, -p) 1
    stack size              (kbytes, -s) 8192
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 1418
    virtual memory          (kbytes, -v) unlimited
    

    by increasing number of open files for the shell to 1024:

    MacBook-Pro:PlanC daniel$ ulimit -S -n 1024
    

    Recording this answer in case others have problems - backups are important after all :)