Esempio n. 1
0
        public BackupBrowser(string backupset, string?backuphash, BackupCore.Core bcore, int backupdst = 0)
        {
            ContinueLoop = true;
            BCore        = bcore;
            BackupDst    = backupdst;
            BackupSetReference backupSetReference = new BackupSetReference("test", false, false, false);

            if (!BCore.DestinationAvailable)
            {
                backupSetReference = backupSetReference with {
                    Cache = true
                };
            }
            (string hash, BackupCore.BackupRecord record)targetbackuphashandrecord;
            if (backuphash == null)
            {
                targetbackuphashandrecord = BCore.DefaultDstDependencies[BackupDst].Backups.GetBackupHashAndRecord(backupSetReference);
            }
            else
            {
                targetbackuphashandrecord = BCore.DefaultDstDependencies[BackupDst].Backups.GetBackupHashAndRecord(backupSetReference, backuphash, 0);
            }
            BackupHash = targetbackuphashandrecord.hash;
            BackupSet  = backupset;
            BackupCore.BackupRecord backuprecord = targetbackuphashandrecord.record;
            BackupTree  = BackupCore.MetadataNode.Load(BCore.DefaultDstDependencies[BackupDst].Blobs, backuprecord.MetadataTreeHash);
            CurrentNode = BackupTree;
        }
Esempio n. 2
0
        private void ChangeBackup(CBOptions opts)
        {
            string curpath = CurrentNode.Path;
            string backuphash;

            if (opts.Backup == null)
            {
                if (opts.Offset == 0)
                {
                    throw new ChangeBackupException("Must set either or both backup or offset.");
                }
                backuphash = BackupHash;
            }
            else
            {
                backuphash = opts.Backup;
            }
            var targetbackuphashandrecord = BCore.DefaultDstDependencies[BackupDst].Backups.GetBackupHashAndRecord(new BackupSetReference(BackupSet, false, false, false), backuphash, opts.Offset);

            BackupHash = targetbackuphashandrecord.Item1;
            BackupCore.BackupRecord backuprecord = targetbackuphashandrecord.Item2;
            BackupTree = BackupCore.MetadataNode.Load(BCore.DefaultDstDependencies[BackupDst].Blobs, backuprecord.MetadataTreeHash);
            BackupCore.MetadataNode?curnode = BackupTree.GetDirectory(curpath);
            if (curnode != null)
            {
                CurrentNode = curnode;
            }
            else
            {
                CurrentNode = BackupTree;
            }
            Console.WriteLine("Switching to backup {0}: \"{1}\"", BackupHash.Substring(0, 6), backuprecord.BackupMessage);
        }