Version control of data structures
Put lightweight structures (directories/symlinks) under version control. After every change the state should be saved (and possibly pushed). In case of emergency a safe state could be manually restored. Heavy data could be backuped using normal filesystem backup if it is separated from the lightweight structures.