Generate one sorted list of relative file paths from the source folder and another from the copied folder, then compare those lists before treating the copy as complete. Preserve both folders during the review: a matching name inventory does not prove that file bytes, permissions, or restorable application data also match.
Freeze the two folder boundaries before collecting names
Choose one explicit source root, one explicit copy root, and a separate audit folder. Do not place the reports inside either tree, because a report created under one root would become an extra file in the next inventory.
Consider a photo archive with Events\2025\cover.jpg and Products\2025\cover.jpg. A list containing only cover.jpg twice cannot tell whether both copies landed in the correct subfolders. Relative paths preserve the folder context, so the two entries remain distinguishable even though their base names match.
Record the drive letters and full roots before opening PowerShell. Confirm that cloud-backed folders are available offline if the copy is meant to contain local bytes, and stop applications that are still changing the archive. The commands below enumerate what Windows exposes at that moment; they do not create a snapshot of open or changing files.
Create the audit folder in File Explorer outside both trees and give it a run-specific name such as C:\FolderAudit\2026-08-31-photo-copy. Keep any older audit folder as a separate record. The manifest commands use -NoClobber, so an accidental reuse of the same report name fails instead of silently replacing an earlier list.
Build read-only relative-path manifests in supported PowerShell versions
The workflow is scoped to Windows PowerShell 5.1 and PowerShell 7.5, whose current Microsoft documentation was checked on 2026-08-31. Get-ChildItem for Windows PowerShell 5.1 and PowerShell 7.5 document recursive enumeration, hidden-item inclusion, file filtering, and names relative to the supplied path.
Enter your own three existing folder paths; the examples are placeholders:
- Set the source root:
$sourceFolder = 'D:\PhotoArchive\Original'. - Set the copied root:
$copyFolder = 'E:\PhotoArchive\Copy'. - Set the separate report folder:
$auditFolder = 'C:\FolderAudit\2026-08-31-photo-copy'. - Resolve the two new report names:
$sourceManifest = Join-Path $auditFolder 'source-relative-paths.txt'and$copyManifest = Join-Path $auditFolder 'copy-relative-paths.txt'.
Collect files, including hidden files, and sort the relative paths:
- Source list:
$sourceNames = Get-ChildItem -LiteralPath $sourceFolder -File -Recurse -Force -Name | Sort-Object. - Copy list:
$copyNames = Get-ChildItem -LiteralPath $copyFolder -File -Recurse -Force -Name | Sort-Object. - Sanity check:
$sourceNames.Countand$copyNames.Countshould each produce a plausible number before any report is accepted.
Write new text reports without overwriting an existing manifest:
- Source report:
$sourceNames | Out-File -LiteralPath $sourceManifest -Encoding utf8 -NoClobber. - Copy report:
$copyNames | Out-File -LiteralPath $copyManifest -Encoding utf8 -NoClobber.
Microsoft documents -NoClobber for Out-File in Windows PowerShell 5.1 and PowerShell 7.5. Both versions accept -Encoding utf8, but their UTF-8 byte-order-mark defaults differ. That encoding difference does not change the path text pasted into the browser comparison, but a byte-for-byte comparison of the two manifest files themselves could notice it.
These commands read the two trees and create separate reports. They do not copy, rename, or delete archive files. If PowerShell reports access denied, do not assume the missing subtree is empty; record the error and resolve access through the approved Windows or organization process.
Compare the pasted manifests by line
Open both text reports, copy all lines from the source report into the left field of the Text Diff tool, and paste all lines from the copy report into the right field. Use Line mode because each relative path is one inventory record.
The tool compares only the pasted text. It never scans either folder, opens a manifest file by itself, copies a photo, changes a filename, or repairs the backup. A green addition means the line appears only on the right side of this exact text comparison; a red deletion means it appears only on the left. Reordered or differently cased lines can also create visual differences, which is why both lists use the same sort step.
For the duplicate cover.jpg example, a left-only Events\2025\cover.jpg and a right-only Events\2025\cover (1).jpg suggest a rename or collision during the copy process. Do not rename either file as an automatic fix. Return to the copy log and source folders, determine which path is authoritative, and make any correction through the backup procedure that owns the copy.
If the lists are too long for a responsive browser tab, compare the in-memory arrays locally with $differences = Compare-Object -ReferenceObject $sourceNames -DifferenceObject $copyNames. Microsoft documents that <= marks a reference-only value and => a difference-only value. Save that output as a new audit artifact if policy requires it; do not treat an empty display as the only evidence.
Investigate every path difference in its folder context
A path missing from the copy can mean a failed transfer, an exclusion rule, an inaccessible source, a cloud placeholder, or a file created after enumeration began. An extra path in the copy can be an older file, a conflict copy, an application cache, or a report accidentally stored under the destination root.
Work from the relative path back to both folders. Confirm the source item still exists, check the copy application's log, and note whether the item was intentionally excluded. Keep the source and copied trees unchanged until the difference has an owner and an explanation.
Case-only differences deserve attention even on a typical case-insensitive Windows volume. Another system, archive format, synchronization service, or case-sensitive directory can treat them differently. Similarly, a path list omits empty directories, so an application that requires an empty folder structure needs a separate directory inventory.
Do not infer content identity from an identical extension or filename. report.pdf can keep its name while its content changes, and renaming a file never converts its format. The manifest comparison answers “which relative file names were enumerated,” not “are these files equivalent.”
Add content and restore checks before accepting the backup
When the two path lists match, move to a separate content check. Microsoft documents Get-FileHash for computing a file-content hash, with SHA256 as the default in Windows PowerShell 5.1. A controlled hash manifest can detect content differences that a name list cannot, but it must pair each relative path with the correct file and must handle access errors explicitly.
Hashes still do not prove that an application-consistent backup can be restored. Permissions, alternate data streams, reparse points, cloud hydration state, encrypted files, database consistency, and application metadata may require a backup product's own verification. Follow the product and organization procedure for those items.
Finish with a restore test to a separate approved location. Open representative files from early, middle, and late parts of the archive; include at least one large file and both same-named files from different subfolders. Record the manifest counts, unresolved differences, hash-check scope, restore location, and reviewer. Only then can the evidence support the backup decision appropriate to that system.
Frequently asked questions
Does a clean Text Diff result prove the backup is complete?
No. It proves only that the two pasted path lists are identical under the selected comparison. File bytes, permissions, hidden streams, empty folders, application consistency, and restorability need separate checks.
Why use relative paths instead of file names alone?
Relative paths preserve subfolder context. Two files named cover.jpg remain distinct when one is under Events and the other is under Products.
Can ToolboxHub scan or repair the two folders?
No. Text Diff compares pasted text in the browser. It does not open folders or files, copy data, rename items, delete extras, calculate file hashes, or edit a backup.
What do the Compare-Object side indicators mean?
For the command shown here, <= is present only in the source reference array and => only in the copied-folder difference array. Always keep the variable roles written in the audit note so the sides are not reversed later.
What if PowerShell reports access denied during enumeration?
Treat the manifest as incomplete. Record the inaccessible path, resolve permissions through the approved process, rerun both inventories into new report files, and compare again.
Does this workflow work in every PowerShell release?
The documented scope is Windows PowerShell 5.1 and PowerShell 7.5. Older releases, non-Windows systems, organization-restricted shells, and special storage providers can behave differently and need their own current documentation and test plan.