Resposta alternativa: forçando persistência de letra de unidade
Embora eu definitivamente esteja com a minha primeira resposta, pensei em adicionar outra abordagem, na qual você pode conseguir trabalhar com algum esforço inicial. Um grande aviso sobre isso, como eu nunca tentei e, normalmente, a menos que você use o Backup Exec exatamente da maneira pretendida, ele geralmente acaba em lágrimas.
Forçar via script USBDLM ou WMI
Essencialmente, essa abordagem exige a garantia de que todos os seus discos USB de backup recebam a mesma letra de unidade antes da execução da tarefa de backup. Isso pode ser feito usando o USBDLM, do link . Caso contrário, você estaria vendo um script WMI - seja executado manualmente ou programado para ser executado durante o dia, antes da tarefa de backup - para localizar um disco USB conectado e válido por serial / modelo / ID do dispositivo e atribuir sua unidade -letter para o fixo do seu RB2D. Você pode até mesmo executá-lo em um comando de pré-tarefa, desde que o dispositivo de backup não seja determinado antes da execução pré-tarefa.
Antecedentes
Eu acho que os problemas com essa abordagem se devem à lógica numérica do Backup Exec para os arquivos IMG que acabam em um (R) B2D. Espero que o Backup Exec perca o controle do que pode ser sobrescrito, etc. Isso pode ser evitado se você executar operações de inventário no RB2D toda vez que usá-lo. Novamente, se o comando de pré-tarefa for executado antes da determinação do dispositivo de backup, você poderá usar bemcmd.exe
para executar um trabalho de Inventário salvo, depois que a letra de unidade for atribuída e antes da execução da tarefa de backup.
Exemplo de VBScript para interface com o WMI
Um arquivo VBScript básico que força a primeira partição em um disco a ser montada com uma determinada letra de unidade, com base em uma lista de Plug & Play Device IDs é o seguinte. Ele deve funcionar em qualquer coisa do Windows Server 2003 e para cima, mas eu só tenho XP para entregar no momento e por isso não testei eu mesmo:
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
Boa sorte.