Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I am setting up a backup system using the latest Backup Exec 2010 R3, and I would like to use usb hard drives as a backup media. I'm trying to figure out the best hassle-free way to introduce a disk rotation strategy into Backup Exec, but I'm coming up with the following problems:

Setup (simplified to address the problem at hand)

  • Backup Exec 2010 R3 server on a Windows 2003 R2 server
  • Use a different backup-to-disk folder for each day of the week
  • Rotate external disks based on the day of the week

Using the built-in removable backup to disk option

This option has problems, because backup-to-disk folders are based on drive letters instead of disk IDs. That means that:

  • More than one removable backup to disk drives cannot be assigned to the same drive letter.
  • If drive letters are assigned to disks to permit the creation of multiple removable backup to disk drives, you can easily use up all available drive letters when creating a comprehensive year-round backup system. Additionally, special setup is required to prepare disks for use (assigning a drive letter) to a drive.
  • If drive letter assignment gets re-arranged due to windows USB drive behavior, backup drives won't come online.

All this means that I don't have a straightforward way to link removable backup to disk folders to external drives.

Using a backup to disk setup

This setup seemed to work, at first, since Backup Exec was finding disks and using them. However, the system does not seem to care which physical disk to use for a backup, and creates backup to disk folders on the drives that have already been set up with other backup to disk folders. Imagine this scenario:

Backup Exec Devices:

  • BED001
  • BED002

Corresponding Physical Devices:

  • PD001
  • PD002

PD001 and PD002 are attached to the system to handle two days worth of backups. However, Backup Exec uses BED001 for both backups, and creates a new backup to disk folder on PD001 to handle the backup.

The BIG Question

The big question here is how do I set up the system to make it easy to identify which disk is needed in the event a restore operation is required to retrieve data from a specific date?

share|improve this question
1  
BackupAssist is a more appropriate tool for backups to USB media. It supports USB drive rotation natively, and it automatically ensures that each USB drive in a given backup set will be assigned the correct (same) drive letter when mounted. It also provides an option to automatically unmount a USB disk when a backup job completes, so that the process of rotating drives is as simple as rotating tapes (just unplug and plug). @user49761 is correct that creative uses of BackupExec may lead to tears. –  Skyhawk Nov 9 '11 at 14:32

3 Answers 3

Depending on how many USB disks you want to rotate, one option might be to mount all the USB disks, allowing them each to get their own drive letter, create a Removable B2D folder on each of them and add them all to a device pool. Your job would then target the device pool.

In theory, because they are marked as removable, Backup Exec will check if each RB2D folder exists/is online before it are used. And, because they are in a pool (and the job targets that pool), Backup Exec will use the first online one it can find.

If you intend to rotate more USB disks than you can reliably assign drive-letters, you would have to create non-removable B2D folders on each of the drives. However, BE will not attempt to check whether they are online before they are used, so you would have to restart the BE services every time the USB disk is changed.

http://www.symantec.com/business/support/index?page=content&id=TECH38839 has more details.

share|improve this answer

Although I'm definitely sticking with my first answer, I thought I'd add another approach, which you may be able to get working with some initial effort. A massive disclaimer on this though, as I've never tried it and, typically, unless you use Backup Exec in exactly the way it was intended, it usually ends in tears.

Essentially, this approach requires ensuring that all of your backup USB disks are given the same drive-letter, prior to the backup job running. This might be doable using USBDLM, from http://www.uwe-sieber.de/usbdlm_e.html. Otherwise, you'd be looking at a WMI script -- either run manually or scheduled to run during the day, prior to the backup job -- to find a valid, connected USB disk by serial/model/device ID and assign its drive-letter to the fixed one of your RB2D. You may even be able to run this in a Pre-Job Command, provided the backup device is not determined prior to the pre-job run.

I reckon the problems with this approach will be due to Backup Exec's numbering logic for the IMG files that end up on a (R)B2D. I expect that Backup Exec will lose track of what can be overwritten, etc. This might be avoidable if you were to perform inventory operations on the RB2D every time you used it. Again, if the pre-job command runs before the backup device is determined, you might be able to use bemcmd.exe to run a saved Inventory job, after the drive-letter is assigned and before the backup job runs.

A basic VBScript file that forces a the first partition on a disk to be mounted with a given drive-letter, based on a list of allowed Plug & Play Device IDs is as follows. It should work on anything Windows Server 2003 and upwards, but I only have XP to hand at the moment and so have not tested it myself:

Option Explicit

Const DRIVE_LETTER = "Q:"

Dim validDisks : validDisks = Array( _
    "USBSTOR\\DISK&VEN_KINGSTON&PROD_DATATRAVELER_2.0&REV_PMAP\\001D0F0C73C8B91123110031&0", _
    "USBSTOR\\DISK&VEN_TDKMEDIA&PROD_TF_150_DRIVE&REV_PMAP\\07AA0207B128CA8E&0", _
    "pnpdeviceid_of_disk_3", _
    "pnpdeviceid_of_disk_4" _
) 'REMEMBER TO ESCAPE ANY \ WITH \\

Dim wmiService : Set wmiService = GetObject("winmgmts:{impersonationLevel=Impersonate}!//.")

Dim wqlQuery : wqlQuery = "SELECT * FROM Win32_DiskDrive WHERE InterfaceType = 'USB' AND (PNPDeviceID = '" _
                         & Join(validDisks, "' OR PNPDeviceID = '") _
                         & "')"

Dim diskDrives : Set diskDrives = wmiService.ExecQuery(wqlQuery, , 48)

Dim diskDrive : For Each diskDrive In diskDrives
    WScript.Echo "Found disk: " & diskDrive.Caption 
    Dim deviceID : deviceID =  Replace(diskDrive.DeviceID, "\", "\\")

    wqlQuery = "ASSOCIATORS OF {Win32_DiskDrive.DeviceID=""" & deviceID & """} WHERE AssocClass = Win32_DiskDriveToDiskPartition"
    Dim partitions : Set partitions = wmiService.ExecQuery(wqlQuery, , 48)

    Dim partition : For Each partition In partitions
        WScript.Echo "Found partition: " & partition.Caption 

        wqlQuery = "ASSOCIATORS OF {Win32_DiskPartition.DeviceID=""" & partition.DeviceID & """} WHERE AssocClass = Win32_LogicalDiskToPartition"
        Dim logicalDisks : Set logicalDisks = wmiService.ExecQuery(wqlQuery, , 48)

        Dim logicalDisk : For Each logicalDisk In logicalDisks
            WScript.Echo "Found logical disk: " & logicalDisk.DeviceID 

            If UCase(Trim(logicalDisk.DeviceID)) <> UCase(DRIVE_LETTER) Then
                wqlQuery = "SELECT * FROM Win32_Volume WHERE Name = '" & logicalDisk.DeviceID & "\\'"
                Dim volumes : Set volumes = wmiService.ExecQuery(wqlQuery, , 48)

                Dim volume : For Each volume in volumes
                    WScript.Echo "Found volume: " & volume.Name
                    volume.DriveLetter = DRIVE_LETTER
                    volume.Put_
                    WScript.Echo "Changed USB disk drive letter to " & DRIVE_LETTER & "."
                    Exit For    'ONLY DO THIS TO THE FIRST ONE FOUND
                Next
            Else 
                WScript.Echo "USB disk drive letter is already " & DRIVE_LETTER & ".  No change required"
            End If

            Exit For    'ONLY DO THIS TO THE FIRST ONE FOUND
        Next

        Set logicalDisks = Nothing
        Exit For    'ONLY DO THIS TO THE FIRST ONE FOUND
    Next

    Set partitions = Nothing
    Exit For    'ONLY DO THIS TO THE FIRST ONE FOUND
Next

Set diskDrives = Nothing
Set wmiService = Nothing

Good luck.

share|improve this answer

Everyone is over-complicating this issue here, it is far easier and more obvious than first thought to do with Backup Exec.

Use 3 drives, with one being a fixed drive that does not leave the premises (more on this in a second).

You create 2 backups per day MON-1 and MON-2. through to THURS-1 and THURS-2. Then Friday1 through to Friday5 Finally JAN - DEC.

The idea being that the backup will run to BOTH drives overnight. You'll get a failure as one drive cannot be found, but it'll backup to the other.

Every Friday and Month it backs up to your fixed drive that does not leave the premises for archival purposes.

So your backups should look like this (using GFS system and two USB removable drives).

MON1 MON2 TUES1 TUES2 WEDS1 WEDS2 THURS1 THURS2 FRIDAY1 FRIDAY2 FRIDAY3 FRIDAY4 FRIDAY5 MONTH-JAN MONTH-FEB . . . MONTH-DEC

DAY1 pertains to USB Drive 1 DAY2 pertains to USB Drive 2

Works a treat too, as long as you remember to cancel failed backups and not have them reschedule.!

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.