The Big Debate: Azure Files vs. SharePoint
- Introduction
- Start with the workload, not the storage
- SharePoint Online - a Collaboration Engine that Happens to Store Files
- Azure Files - SMB Storage for Workloads that Expect SMB Storage
- The decision chart you actually want
- Discovery is where migrations are won or lost
- The real takeaway
- About the author
Contents
- Introduction
- Start with the workload, not the storage
- SharePoint Online - a Collaboration Engine that Happens to Store Files
- Azure Files - SMB Storage for Workloads that Expect SMB Storage
- The decision chart you actually want
- Discovery is where migrations are won or lost
- The real takeaway
- About the author
Introduction
a.k.a. How to migrate file data without breaking apps, users, or your weekends!
Start with the workload, not the storage
Before we talk about tools, we need to talk about behavior. Files generally fall into two categories, even if they live on the same file server today:
-
Some files exist because people collaborate.
-
Other files exist because systems expect them to exist.
People-driven files are opened in Word, Excel, or PowerPoint, edited frequently, shared in meetings, emailed, linked in chat, and occasionally copied somewhere they should not be (like a USB stick). System-driven files are written to by applications, read by services, locked during processing, or accessed using SMB semantics that users never see.
Azure Files – SMB Storage for Workloads that Expect SMB Storage
Azure Files is much closer to what most people think of when they say “file share” out loud. It exposes SMB and NFS endpoints, supports NTFS permissions, integrates with Active Directory or Entra ID, and can be mounted by VMs, containers, and services exactly the way on-premises file servers were.
The decision chart you actually want
This is the chart I keep coming back to in client conversations because it forces clarity.
|
Technical question |
If yes |
If no |
|
Does an application require SMB or NFS? |
Azure Files |
SharePoint |
|
Are NTFS permissions required by the workload? |
Azure Files |
SharePoint |
|
Do multiple users co-author files? |
SharePoint |
Azure Files |
|
Is DLP or retention enforcement required? |
SharePoint |
Azure Files |
|
Are files accessed via Teams or browser? |
SharePoint |
Azure Files |
|
Is this a legacy workload with no refactor planned? |
Azure Files |
SharePoint |
If you answer honestly, the destination usually becomes obvious (well hopefully a lot more obvious after reading this post).
Discovery is where migrations are won or lost
Before moving a single byte, you need visibility. Not guesses. Not anecdotes. Actual data about what lives in your file shares.
SharePoint path limits are unforgiving. This script quickly surfaces problem areas. As I always say, this is a “starter” script. It’s by no means final, but it’s meant to show you how easily scripting can help provide visibility. See above for my example of possibly plugging this into your own environment!
$RootPath = "\\FileServer\Shared"
Get-ChildItem $RootPath -Recurse -Directory | Where-Object { $_.FullName.Length `
-gt 220 } | Select-Object FullName, `
@{Name="PathLength";Expression={$_.FullName.Length}} | Sort-Object PathLength `
-Descending
If this returns results, you already know remediation is required before a SharePoint migration can succeed.
Identify file types that usually indicate applications
Certain extensions are strong signals that Azure Files is the better fit.
$RootPath = "\\FileServer\Shared"
$appExtensions = ".log",".dat",".db",".bak",".tmp",".cfg"
Get-ChildItem $RootPath -Recurse -File | Where-Object { $appExtensions `
-contains $_.Extension } | Group-Object Extension | Sort-Object Count -Descending `
| Select-Object Name, Count
Large volumes here almost always map to system-owned data.
Find cold data you probably should not migrate at all
This is where cost and scope shrink fast.
$RootPath = "\\FileServer\Shared"
$cutoff = (Get-Date).AddYears(-3)
Get-ChildItem $RootPath -Recurse -File | Where-Object { $_.LastAccessTime `
-lt $cutoff } | Measure-Object
Three years untouched is usually a business conversation waiting to happen.
Spot highly collaborative files
Frequent edits point strongly toward SharePoint.
$RootPath = "\\FileServer\Shared"
Get-ChildItem $RootPath -Recurse -File | Group-Object FullName | Where-Object `
{ $_.Count -gt 10 } | Select-Object Name, Count
These are the files that benefit most from version history and co-authoring.
Why most environments end up hybrid
The goal is not ideological purity. The goal is stability, security, and clarity.
The real takeaway
SharePoint is optimized for people and policy.
About the author
Shannon Eldridge-Kuehn
S, Kuehn (27/10/2026) The Big Debate: Azure Files vs. SharePoint