Click here to Skip to main content
Click here to Skip to main content

Reading MTF Backup Files

By , 4 Apr 2007
 

Screenshot - BackupReader.gif

Introduction

We use the NTBackup utility to backup our files at the office. Recently, one of the backup files turned out to be corrupt. Searcing for a solution, I came upon William T. Kranz's freeware ntbkup utility. Although ntbkup did a great job recovering the backup file, it is a command line utility. So, I decided to write a backup reader with a GUI.

Background

Volume, file, and folder information in a MTF backup file is stored as so called Descriptor Blocks. MTF is a linear file format. Reading a MTF backup file is a straightforward process. A backup file contains Data Set Descriptor Blocks, which are followed by Volume Descriptor Blocks. Volume Descriptor Blocks are followed by Directory Descriptor Blocks, which are in turn followed by File Descriptor Blocks.

Each descriptor block is followed by one or more Data Streams. Data streams are used for various purposes. They can be used for padding, storing checksums, long file/folder names, etc. One or more data streams associated with a file descriptor block typically contain file data.

Using the code

To read a backup file, an implementation creates a new instance of the CBackupReader class, passing the name of the backup file as an argument. Then, a catalog is created using the CCatalogNode class. The CCatalogNode class has a tree structure. The root of the tree is the backup file itself. Its child nodes represent the data sets in the backup file. Each data set node contains one (and only one) volume node. Volume nodes contain folders and files as child nodes. To extract a file from the catalog, one traverses the tree to reach the file and calls the ExtractTo method of the CCatalogNode class.
// Open the backup file
CBackupReader mFile = new CBackupReader(mFileName);
// Read the catalog
CCatalogNode node = mFile.ReadCatalog();
// Extract a node from the catalog
node.ExtractTo(mFile, mTargetPath); 

Limitations

  • Backup Reader was tested with a few relatively small backup files. The largest backup file tested was about 2 GB.
  • Compressed and encrypted archives are not supported.
  • Backup Reader works on Windows archives only. Although descriptor block definitions for other operating systems are included in the source code, they are not tested.
  • Archives that span multiple tapes/disks are not supported.

References

  1. ntbkup - William T. Kranz's freeware backup utility
  2. MTF specification and a Linux backup reader with C source code

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Ozgur Ozcitak
Turkey Turkey
Member
No Biography provided

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
GeneralError on Backup ReadermemberYasharGhassemi18 Apr '10 - 2:05 
QuestionHow can I use this code to read SQL SERVER BACKUP Files (*.bck)?memberVENKAT SEERLA10 Feb '10 - 20:35 
GeneralCompile this codememberananon10 Jan '09 - 9:54 
GeneralIs it compatible with Veritas BKF StructurememberMaverick Debasish31 Dec '08 - 22:59 
Is it compatible with Veritas BKF Structure? What code change I need to do it make it work for the VVeritas BKF structure?
GeneralRe: Is it compatible with Veritas BKF StructurememberOzgur Ozcitak6 Jan '09 - 0:54 
GeneralRe: Is it compatible with Veritas BKF StructurememberMaverick Debasish6 Jan '09 - 5:04 
Generalerror to compilemembericelso20066 Oct '07 - 12:18 
GeneralRe: error to compilememberr_stevenz24 Nov '08 - 15:07 
QuestionAny help will be appreciatedmemberSaeidehV30 Sep '07 - 22:34 
GeneralSQL MTFmemberDanielSass2 Sep '07 - 4:30 
GeneralRe: SQL MTFmemberOzgur Ozcitak13 Sep '07 - 20:58 
Questionlicense ?memberseb900025 Jul '07 - 5:54 
AnswerRe: license ?memberOzgur Ozcitak1 Aug '07 - 3:45 
GeneralPossible Bugmemberwinki_14 May '07 - 4:49 
GeneralRe: Possible BugmemberOzgur Ozcitak6 Jun '07 - 1:13 
QuestionMerhaba [modified]memberbukos21 Apr '07 - 13:12 
AnswerRe: MerhabamemberOzgur Ozcitak3 May '07 - 0:39 
GeneralRe: Merhabamemberbukos3 May '07 - 10:21 
QuestionReverse action code ?memberdss.manager9 Apr '07 - 0:12 
AnswerRe: Reverse action code ?memberozgurozcitak9 Apr '07 - 5:06 
GeneralMany Thanks!memberCrnlJohnSmith28 Mar '07 - 15:06 
Generalthanks for this nice tool.membervolkan.ozcelik22 Mar '07 - 5:18 
GeneralRe: thanks for this nice tool.memberozgurozcitak27 Mar '07 - 3:28 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web02 | 2.6.130516.1 | Last Updated 4 Apr 2007
Article Copyright 2007 by Ozgur Ozcitak
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid