How to make Time Machine backups faster

Time Machine was originally designed to make relatively small backups frequently, every hour. In recent years, some users have preferred to run more substantial backups once a day, and most of us now back up significantly larger amounts of data. Making Time Machine backups faster is becoming ever more important, so here I explore some popular solutions.

Units and scale

One of the first problems we face when looking at transfer speed is the units used. Most connection speeds are quoted in Gb/s and Mb/s, that’s gigabits and megabits per second, although most of us think and work in GB/s and MB/s, using bytes rather than bits. We’re most interested in how long it might take to transfer a file of 1 GB, which requires significantly more than 8 gigabits to be transferred, because of overhead.

To set these in the context of local disk transfer performance:

  • a good hard disk should read and write at about 100 MB/s, but varies between about 60-140 MB/s according to where on the platter the data is;
  • faster USB 3.1 Gen 2 SSDs should read and write at about 1 GB/s;
  • good NVMe SSDs connected by Thunderbolt 3 should read and write at between 2.2-3 GB/s.

Storage speed

This is the net write speed from your Mac to Time Machine backup storage. That’s best designed so that no single step in the process acts as a bottleneck, but each delivers a similar throughput. That’s most difficult for networked storage, such as NAS systems, where network speed usually determines overall performance.

Traditional standard network speed is 1 Gb/s, delivering a maximum transfer rate of around 100 MB/s after overheads, and when copying large numbers of small files using SMB even that’s unlikely to be achievable. Better network devices and NAS should now support 2.5 Gb/s, and that’s limited to a maximum of around 250 MB/s. Running your local network at 10 Gb/s is significantly more difficult, and requires more expensive NAS systems to attain 1 GB/s at best.

If your network and NAS can only support 2.5 Gb/s, using NVMe SSDs in the NAS isn’t going to make it significantly faster than a well-configured RAID array of hard disks, as network transfer rate is going to limit storage speed. Those SSDs may have other advantages, but they aren’t going to realise their speed potential.

Where NVMe SSDs come into their own is with high-speed local storage, connected to the Mac via Thunderbolt 3. There the connection has a maximum transfer rate of around 3 GB/s, and it’s reasonable to expect storage speed to reach 2 GB/s for larger files. Local storage also has the advantage that it doesn’t use SMB with its inefficiencies, and its higher overhead with many smaller files.

Whether you opt for network or local storage, backup speed is most likely to be limited by the connection between your Mac and the storage system. It’s generally far cheaper to achieve 2-3 GB/s over local Thunderbolt than less than half that over 10 Gb/s Ethernet.

I/O throttling

One well-known limit to Time Machine backup speed is I/O policy, which restricts access to storage to ensure that other processes are given priority. This is set in the IOPOL_THROTTLE policy, whose effects I assessed in this article.

Measured transfer rates during the copying phase of Time Machine backup showed that turning the policy off resulted in a huge increase in transfer rates, increasing write speed from 193 MB/s to 332 MB/s.

Because I/O policy can only be controlled globally, side-effects to any change could be serious, so this is best reserved for special situations such as performing exceptionally large first full backups, when competing user processes can be kept to a minimum.

Backup size and content

By far the cheapest and simplest way to reduce the time for backing up is to limit the quantity of files and data to be copied during each backup. In practice, Time Machine copies large files relatively efficiently, and approaches storage speed. It’s much less efficient when trying to copy hundreds of thousands of small files, for which there have been two good examples: volume version databases, which have now been added to the standard list of exclusions, and Apple’s Xcode app.

Before considering any narrower restrictions to your backups, ensure that you exclude any copies of Xcode, and of course Virtual Machines, another well-known cause of large incremental backups.

Working with the list of exclusions in Time Machine settings quickly becomes tedious, and isn’t a good choice if you want to add many. Instead, use the tmutil addexclusion command, or tag folders and files with the com.apple.metadata:com_apple_backup_excludeItem extended attribute, which is how tmutil addexclusion works when used without any options.

The most useful of the options is tmutil addexclusion -p which shouldn’t be used to exclude volumes, but is intended for folders and individual files. It recognises them by path, so when the item moves it’s effectively removed from the exclusion list. It requires Full Disk Access and sudo. Use the extended attribute where you want the exclusion to be sticky, and move wherever that item goes.

While carefully tuned exclusions can be invaluable for minimising the size of Time Machine backups, remember that they work differently with Time Machine’s snapshots: if only one file on a volume is backed up by Time Machine, then it will make an hourly snapshot of the whole volume, which it will then try to retain for 24 hours. Plan your volumes so that active and large files that you don’t want backed up by Time Machine are stored on their own volume, the whole of which is excluded from backups.

Summary

  • Storage speed is most likely to be limited by the connection between Mac and backup storage.
  • The cheapest way to achieve high storage speeds of 2-3 GB/s is with NVMe SSDs connected via Thunderbolt.
  • Even with expensive 10 Gb/s connections, networked storage can’t come close to that.
  • Removing IOPOL_THROTTLE policy can be effective for special situations, but side-effects make it dangerous for continuous use.
  • Exclude anything with large numbers of small files, such as Xcode, which incur high overhead no matter how they’re backed up.
  • Use exclusions to minimise backup size, particularly with tmutil addexclusion -p for folders and files.
  • Tag folders and files to be excluded using the com.apple.metadata:com_apple_backup_excludeItem extended attribute.
  • Put active and large files on a separate excluded volume so that they’re not just excluded from backups, but from snapshots too.