Skip to content

Commit 91eef04

Browse files
authored
Merge pull request #4 from ronnm-veeam/master
VBR v12 updates
2 parents bc76c2f + 1502c12 commit 91eef04

File tree

45 files changed

+196
-235
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+196
-235
lines changed

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@
44

55
This Windows utility leverages the Powershell-based Veeam Data Integration API to mount backup points for the purpose of performing file-level comparison between two backup increments useful for helping determine the source filesystem changes that have caused some sort of restore point size anomoly for instance a daily increment point size substantially larger or smaller than normal. The utility also accomodates comparing a restore point to a running workload (VM or physical).
66

7+
Version 2.0.1 updated for VBR v12 support
8+
79
## 📗 Documentation
810

911
**Author:** Ronn Martin (ronn.martin@veeam.com)
1012

11-
**System Requirements:** Veeam Powershell module (v11+), .NET Framework 4.6.2
13+
**System Requirements:** Veeam Backup & Replication (v11+), Veeam Powershell module (v11+), .NET Framework 4.7.2
1214

1315
**Operation:** Only Windows workload backups are currently supported. The utility runs with full Windows backup operator privilege which requires elevated execution permission. If "Compare" is selected directly following the completion of the mount operations, all disks in the backup are compared. It is highly reccommended that only one disk volume or folder set w/in a volume are compared at a time. The application can consume considerable RAM resources and take several minutes to run comparisons of entire backup images e.g. for a Windows 10 backup which includes MySQL, Python, Visual Studio, IIS, etc. a full comparison can take up to 10 minutes and consume 3GB+ RAM. File level differences are flagged and displayed if any of the following conditions are met -
1416

@@ -17,7 +19,7 @@ This Windows utility leverages the Powershell-based Veeam Data Integration API t
1719
* If the file modification date has changed between restore points
1820
* If the file's encryption status has changed between restore points.
1921

20-
**Usage:** After installing to a Windows instance that meets the requirements above, the application will reside in "\Program Files\Veeam Skunkworks\Veeam Restore Point File Diff\VeeamRestorePointDiff.exe". A start menu shortcut is also added for convenience.
22+
**Usage:** After installing to a Windows instance that meets the requirements above (most likely the VBR server itself), the application will reside in "\Program Files\Veeam Skunkworks\Veeam Restore Point File Diff\VeeamRestorePointDiff.exe". A start menu shortcut is also added for convenience.
2123
For normal operation, launch the application as administrator and select the Windows workload for comparison from the list of backups and affiliated workloads.
2224

2325
![Workload Selection](images/WorkloadSelection.png)

Source/.vs/VeeamFileDiff/v16/.suo

129 KB
Binary file not shown.

Source/Setup/Release/Setup.msi

512 Bytes
Binary file not shown.

Source/Setup/Release/setup.exe

527 KB
Binary file not shown.

Source/Setup/Setup.vdproj

Lines changed: 111 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@
1313
"SccProvider" = "8:"
1414
"Hierarchy"
1515
{
16+
"Entry"
17+
{
18+
"MsmKey" = "8:_27BB85F2452D9EDF44F0E2CDFDC679D4"
19+
"OwnerKey" = "8:_2BDE5BD7A46D4159A6381A5048E23E28"
20+
"MsmSig" = "8:_UNDEFINED"
21+
}
1622
"Entry"
1723
{
1824
"MsmKey" = "8:_2BDE5BD7A46D4159A6381A5048E23E28"
@@ -21,7 +27,13 @@
2127
}
2228
"Entry"
2329
{
24-
"MsmKey" = "8:_5E94EFF1D432185A95DB88AD1A720A40"
30+
"MsmKey" = "8:_2E9ECAED9CDF35A1C226B0076909C55D"
31+
"OwnerKey" = "8:_2BDE5BD7A46D4159A6381A5048E23E28"
32+
"MsmSig" = "8:_UNDEFINED"
33+
}
34+
"Entry"
35+
{
36+
"MsmKey" = "8:_3028851FFF28EA0B2B28305C499CD607"
2537
"OwnerKey" = "8:_2BDE5BD7A46D4159A6381A5048E23E28"
2638
"MsmSig" = "8:_UNDEFINED"
2739
}
@@ -39,7 +51,19 @@
3951
}
4052
"Entry"
4153
{
42-
"MsmKey" = "8:_BFD23EA1ED1F7F6673BD97C754CDC403"
54+
"MsmKey" = "8:_EB7EF63BAF8394864FD070A8E3243FA2"
55+
"OwnerKey" = "8:_2BDE5BD7A46D4159A6381A5048E23E28"
56+
"MsmSig" = "8:_UNDEFINED"
57+
}
58+
"Entry"
59+
{
60+
"MsmKey" = "8:_EB7EF63BAF8394864FD070A8E3243FA2"
61+
"OwnerKey" = "8:_2E9ECAED9CDF35A1C226B0076909C55D"
62+
"MsmSig" = "8:_UNDEFINED"
63+
}
64+
"Entry"
65+
{
66+
"MsmKey" = "8:_UNDEFINED"
4367
"OwnerKey" = "8:_2BDE5BD7A46D4159A6381A5048E23E28"
4468
"MsmSig" = "8:_UNDEFINED"
4569
}
@@ -52,19 +76,25 @@
5276
"Entry"
5377
{
5478
"MsmKey" = "8:_UNDEFINED"
55-
"OwnerKey" = "8:_2BDE5BD7A46D4159A6381A5048E23E28"
79+
"OwnerKey" = "8:_3028851FFF28EA0B2B28305C499CD607"
5680
"MsmSig" = "8:_UNDEFINED"
5781
}
5882
"Entry"
5983
{
6084
"MsmKey" = "8:_UNDEFINED"
61-
"OwnerKey" = "8:_5E94EFF1D432185A95DB88AD1A720A40"
85+
"OwnerKey" = "8:_2E9ECAED9CDF35A1C226B0076909C55D"
6286
"MsmSig" = "8:_UNDEFINED"
6387
}
6488
"Entry"
6589
{
6690
"MsmKey" = "8:_UNDEFINED"
67-
"OwnerKey" = "8:_BFD23EA1ED1F7F6673BD97C754CDC403"
91+
"OwnerKey" = "8:_EB7EF63BAF8394864FD070A8E3243FA2"
92+
"MsmSig" = "8:_UNDEFINED"
93+
}
94+
"Entry"
95+
{
96+
"MsmKey" = "8:_UNDEFINED"
97+
"OwnerKey" = "8:_27BB85F2452D9EDF44F0E2CDFDC679D4"
6898
"MsmSig" = "8:_UNDEFINED"
6999
}
70100
}
@@ -126,10 +156,10 @@
126156
"ComponentsUrl" = "8:"
127157
"Items"
128158
{
129-
"{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.6.2"
159+
"{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.7.2"
130160
{
131-
"Name" = "8:Microsoft .NET Framework 4.6.2 (x86 and x64)"
132-
"ProductCode" = "8:.NETFramework,Version=v4.6.2"
161+
"Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)"
162+
"ProductCode" = "8:.NETFramework,Version=v4.7.2"
133163
}
134164
}
135165
}
@@ -154,22 +184,84 @@
154184
{
155185
"Name" = "8:.NET Framework"
156186
"Message" = "8:[VSDNETMSG]"
157-
"FrameworkVersion" = "8:.NETFramework,Version=v4.5"
187+
"FrameworkVersion" = "8:.NETFramework,Version=v4.7.2"
158188
"AllowLaterVersions" = "11:FALSE"
159189
"InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=395269"
160190
}
161191
}
162192
}
163193
"File"
164194
{
165-
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_5E94EFF1D432185A95DB88AD1A720A40"
195+
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_27BB85F2452D9EDF44F0E2CDFDC679D4"
196+
{
197+
"AssemblyRegister" = "3:1"
198+
"AssemblyIsInGAC" = "11:FALSE"
199+
"AssemblyAsmDisplayName" = "8:System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
200+
"ScatterAssemblies"
201+
{
202+
"_27BB85F2452D9EDF44F0E2CDFDC679D4"
203+
{
204+
"Name" = "8:System.Net.Http.dll"
205+
"Attributes" = "3:512"
206+
}
207+
}
208+
"SourcePath" = "8:System.Net.Http.dll"
209+
"TargetName" = "8:"
210+
"Tag" = "8:"
211+
"Folder" = "8:_7302386028D34E1E813CE3E330CAB5CE"
212+
"Condition" = "8:"
213+
"Transitive" = "11:FALSE"
214+
"Vital" = "11:TRUE"
215+
"ReadOnly" = "11:FALSE"
216+
"Hidden" = "11:FALSE"
217+
"System" = "11:FALSE"
218+
"Permanent" = "11:FALSE"
219+
"SharedLegacy" = "11:FALSE"
220+
"PackageAs" = "3:1"
221+
"Register" = "3:1"
222+
"Exclude" = "11:TRUE"
223+
"IsDependency" = "11:TRUE"
224+
"IsolateTo" = "8:"
225+
}
226+
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_2E9ECAED9CDF35A1C226B0076909C55D"
227+
{
228+
"AssemblyRegister" = "3:1"
229+
"AssemblyIsInGAC" = "11:FALSE"
230+
"AssemblyAsmDisplayName" = "8:Veeam.Backup.Model, Version=11.0.0.0, Culture=neutral, PublicKeyToken=bfd684de2276783a, processorArchitecture=AMD64"
231+
"ScatterAssemblies"
232+
{
233+
"_2E9ECAED9CDF35A1C226B0076909C55D"
234+
{
235+
"Name" = "8:Veeam.Backup.Model.dll"
236+
"Attributes" = "3:512"
237+
}
238+
}
239+
"SourcePath" = "8:Veeam.Backup.Model.dll"
240+
"TargetName" = "8:"
241+
"Tag" = "8:"
242+
"Folder" = "8:_7302386028D34E1E813CE3E330CAB5CE"
243+
"Condition" = "8:"
244+
"Transitive" = "11:FALSE"
245+
"Vital" = "11:TRUE"
246+
"ReadOnly" = "11:FALSE"
247+
"Hidden" = "11:FALSE"
248+
"System" = "11:FALSE"
249+
"Permanent" = "11:FALSE"
250+
"SharedLegacy" = "11:FALSE"
251+
"PackageAs" = "3:1"
252+
"Register" = "3:1"
253+
"Exclude" = "11:TRUE"
254+
"IsDependency" = "11:TRUE"
255+
"IsolateTo" = "8:"
256+
}
257+
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_3028851FFF28EA0B2B28305C499CD607"
166258
{
167259
"AssemblyRegister" = "3:1"
168260
"AssemblyIsInGAC" = "11:FALSE"
169261
"AssemblyAsmDisplayName" = "8:ProcessPrivileges, Version=1.5.7.0, Culture=neutral, PublicKeyToken=fa3ff549c00ac058, processorArchitecture=MSIL"
170262
"ScatterAssemblies"
171263
{
172-
"_5E94EFF1D432185A95DB88AD1A720A40"
264+
"_3028851FFF28EA0B2B28305C499CD607"
173265
{
174266
"Name" = "8:ProcessPrivileges.dll"
175267
"Attributes" = "3:512"
@@ -244,20 +336,20 @@
244336
"IsDependency" = "11:FALSE"
245337
"IsolateTo" = "8:"
246338
}
247-
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_BFD23EA1ED1F7F6673BD97C754CDC403"
339+
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_EB7EF63BAF8394864FD070A8E3243FA2"
248340
{
249341
"AssemblyRegister" = "3:1"
250342
"AssemblyIsInGAC" = "11:FALSE"
251-
"AssemblyAsmDisplayName" = "8:System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
343+
"AssemblyAsmDisplayName" = "8:Veeam.Backup.Common, Version=11.0.0.0, Culture=neutral, PublicKeyToken=bfd684de2276783a, processorArchitecture=AMD64"
252344
"ScatterAssemblies"
253345
{
254-
"_BFD23EA1ED1F7F6673BD97C754CDC403"
346+
"_EB7EF63BAF8394864FD070A8E3243FA2"
255347
{
256-
"Name" = "8:System.Net.Http.dll"
348+
"Name" = "8:Veeam.Backup.Common.dll"
257349
"Attributes" = "3:512"
258350
}
259351
}
260-
"SourcePath" = "8:System.Net.Http.dll"
352+
"SourcePath" = "8:Veeam.Backup.Common.dll"
261353
"TargetName" = "8:"
262354
"Tag" = "8:"
263355
"Folder" = "8:_7302386028D34E1E813CE3E330CAB5CE"
@@ -331,15 +423,15 @@
331423
{
332424
"Name" = "8:Microsoft Visual Studio"
333425
"ProductName" = "8:Veeam Restore Point File Diff"
334-
"ProductCode" = "8:{3702CCEC-7ECF-4142-8A1C-0E7A8A2138FB}"
335-
"PackageCode" = "8:{F848B326-AD4E-4515-9D85-60A0F6576734}"
426+
"ProductCode" = "8:{E843D620-9C47-4055-9216-E0F5D3AEFF23}"
427+
"PackageCode" = "8:{222ED1FA-D367-4AA6-A603-7D6ED2EAD561}"
336428
"UpgradeCode" = "8:{22D451CD-85AF-4F13-8588-668B73B7280F}"
337429
"AspNetVersion" = "8:4.0.30319.0"
338430
"RestartWWWService" = "11:FALSE"
339431
"RemovePreviousVersions" = "11:TRUE"
340432
"DetectNewerInstalledVersion" = "11:TRUE"
341433
"InstallAllUsers" = "11:TRUE"
342-
"ProductVersion" = "8:1.0.5"
434+
"ProductVersion" = "8:2.0.1"
343435
"Manufacturer" = "8:Veeam Skunkworks"
344436
"ARPHELPTELEPHONE" = "8:"
345437
"ARPHELPLINK" = "8:"

Source/VeeamFileDiff/App.config

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<configuration>
33
<startup>
4-
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
4+
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>
55
</startup>
6-
</configuration>
6+
</configuration>

Source/VeeamFileDiff/Properties/AssemblyInfo.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
// set of attributes. Change these attribute values to modify the information
77
// associated with an assembly.
88
[assembly: AssemblyTitle("Veeam Restore Point File Diff")]
9-
[assembly: AssemblyDescription("Compare two restore points for filesystem-level differences")]
9+
[assembly: AssemblyDescription("Compare two VBR restore points for filesystem-level differences")]
1010
[assembly: AssemblyConfiguration("")]
1111
[assembly: AssemblyCompany("Veeam Skunkworks")]
1212
[assembly: AssemblyProduct("Veeam Restore Point File Diff")]
13-
[assembly: AssemblyCopyright("Copyright © 2021")]
13+
[assembly: AssemblyCopyright("Copyright © 2023")]
1414
[assembly: AssemblyTrademark("")]
1515
[assembly: AssemblyCulture("")]
1616

@@ -32,5 +32,5 @@
3232
// You can specify all the values or you can default the Build and Revision Numbers
3333
// by using the '*' as shown below:
3434
// [assembly: AssemblyVersion("1.0.*")]
35-
[assembly: AssemblyVersion("1.0.5.0")]
36-
[assembly: AssemblyFileVersion("1.0.5.0")]
35+
[assembly: AssemblyVersion("2.0.1.0")]
36+
[assembly: AssemblyFileVersion("2.0.1.0")]

Source/VeeamFileDiff/Properties/Resources.Designer.cs

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Source/VeeamFileDiff/VeeamFileDiff.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<AppDesignerFolder>Properties</AppDesignerFolder>
1010
<RootNamespace>VeeamFileDiff</RootNamespace>
1111
<AssemblyName>VeeamRestorePointDiff</AssemblyName>
12-
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
12+
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
1313
<FileAlignment>512</FileAlignment>
1414
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
1515
<IsWebBootstrapper>false</IsWebBootstrapper>
@@ -160,9 +160,9 @@
160160
</Compile>
161161
</ItemGroup>
162162
<ItemGroup>
163-
<BootstrapperPackage Include=".NETFramework,Version=v4.6.1">
163+
<BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
164164
<Visible>False</Visible>
165-
<ProductName>Microsoft .NET Framework 4.6.1 %28x86 and x64%29</ProductName>
165+
<ProductName>Microsoft .NET Framework 4.7.2 %28x86 and x64%29</ProductName>
166166
<Install>true</Install>
167167
</BootstrapperPackage>
168168
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
@@ -178,7 +178,7 @@
178178
<None Include="RestoreMissingIcon.ico" />
179179
</ItemGroup>
180180
<ItemGroup>
181-
<None Include="Resources\Icon1.ico" />
181+
<WCFMetadata Include="Connected Services\" />
182182
</ItemGroup>
183183
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
184184
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.

0 commit comments

Comments
 (0)