You need to recover a rather complex folder structure but not the full protected volume. The folder structure is large in size
(i.e. 12K folders, 60 million files and 1.2TB in data) and is characterized by specific permissions for various users and groups.
You want to recover this structure while keeping the original permissions. You note that some file paths may be longer than 256 characters.
To perform this operation you need to mount the desired recovery point and copy the desired folder structure using a third party copying
tool, in this case, robocopy. Robocopy is already built into Windows. Although Robocopy can deal with long paths, keeping them as short as possible is
a recommended best practice. The steps below keep this under consideration.
Please take into account the following:
1. Mount the desired Recovery Point in writable mode
2. Choose a short Mounting path (i.e. c:\M)
If the mounted drive in the recovery point is D:, the result should look like:
C:\M\D__
3. Create a list of the root folders to be recovered and place it in a file (one item per line).
For instance, this should look like the following:
Accounting
Development
Engineering
4. From a Powershell Elevated command prompt navigate inside the mounted recovery point until you reach the folders you want to recover
For instance, running DIR shows the following folders (please compare with the list above):
Accounting
ANR
BusinessObjects
Development
Engineering
Program file
5. Use the Powershell script below (between horizontal lines) to perform the restore. Please note that all operations are logged so you can search for
possible errors.
________________________________________
cls
Write-Host "Copy Files from a List of Folders using Robocopy`r`n_________________________________________________________`r`n"
"Please launch the script from the root of the structure to be copied i.e. 'C:\M\D__\fileserver\N Drive'"
#get the list of folders
$xsources = Read-Host "Source File containing the List of Folders"
#set the destination
$xdestination = Read-Host "Destination Root (folder) [Data Wstructure will be copied under this folder]"
#set the log path
$rootlogfile = Read-Host "Log File Path (rootfile, i.e. g:\log) [root file name will be appended with the top Folder name]"
#read the root folders to be processed
$sources = get-content $xsources
#process folders
foreach ($s in $Sources){
$source="$($s.trim())"
$destination = "$($xdestination)\$($source)"
$logfile = "$($rootlogfile)_$($source).txt"
#High Resource Robocopy Line
robocopy.exe $source $destination *.* /E /CopyAll /SecFix /MT:16 /Log:$logfile /V /FP /ETA /Tee /R:1
#Low Resource Robocopy Line
#robocopy.exe $source $destination *.* /E /CopyAll /SecFix /MT:4 /Log:$logfile /V /FP /ETA /R:1
}
________________________________________
6. If your system is does not have sufficient resources, it makes sense to diminish the system requirements by modifying the Script by commenting the
High Resources line and uncommenting the Low Resources one. Please note that the comment character is "#".
7. Please note that a log will be created for each "root" folder in the file containing the folder list.
8. After the operation is complete use the following script (between horizontal lines) to find the possible errors and consolidate them in an error
log. In most cases the errors are the result of tough permissions and fixing them supposed taking ownership of the failed folders and repeating the
process.
________________________________________
cls
Write-Host "Copy Files from a List of Folders using Robocopy`r`n_________________________________________________________`r`n"
"Please launch the script from the root of the structure to be copied i.e. 'C:\M\D__\fileserver\N Drive'"
#get the list of folders
$xsources = Read-Host "Source File containing the List of Folders"
#set the destination
$xdestination = Read-Host "Destination Root (folder) [Data Wstructure will be copied under this folder]"
#set the log path
$rootlogfile = Read-Host "Log File Path (rootfile, i.e. g:\log) [root file name will be appended with the top Folder name]"
#read the root folders to be processed
$sources = get-content $xsources
#process folders
foreach ($s in $Sources){
$source="$($s.trim())"
$destination = "$($xdestination)\$($source)"
$logfile = "$($rootlogfile)_$($source).txt"
#High Resource Robocopy Line
robocopy.exe $source $destination *.* /E /CopyAll /SecFix /MT:16 /Log:$logfile /V /FP /ETA /Tee /R:1
#Low Resource Robocopy Line
#robocopy.exe $source $destination *.* /E /CopyAll /SecFix /MT:4 /Log:$logfile /V /FP /ETA /R:1
}
________________________________________
For convenience, both scripts are attached to the KB.
Product: AppAssure 5.3.x
© 2023 Quest Software Inc. ALL RIGHTS RESERVED. Feedback Terms of Use Privacy Cookie Preference Center