ddaa.net Homepage

Main page

Samba Time Machine configuration survey

David Allouche — 2025-09-11


When I configured a Raspberry Pi for use as a Time Machine server, I found that most recommended Samba configurations used uneeded or obsolete parameters. This is discussed in Time Machine, Samba configuration.

This page collects smb.config snippets, official documentation, and the analysis of the relevance of each parameter found on the web to the Time Machine use case.

Raspberrypi time machine

When ducking for “raspberrypi time machine”, we find the following results.

Oleg Ovechkin wrote:

[backups]
    comment = Backups
    path = /mnt/backups/backups
    valid users = keeper
    read only = no
    vfs objects = catia fruit streams_xattr
    fruit:time machine = yes

Kevin McAleer wrote:

[timemachine]
   path = /mnt/timemachine
   browseable = yes
   read only = no
   guest ok = no
   create mask = 0600
   directory mask = 0700
   comment = Raspberry Pi Time Capsule
   writeable = yes
   valid users = kev # change this to your user account
   write list = kev  # change this to your user account
   vfs objects = catia fruit streams_xattr
   fruit:aapl = yes
   fruit:time machine = yes

JohnKimDev wrote:

[TimeMachine]
comment = Time Machine
path = /home/pi/shared
browseable = yes
writeable = yes
create mask = 0600
directory mask = 0711
spotlight = yes
vfs objects = catia fruit streams_xattr
fruit:aapl = yes
fruit:time machine = yes
public = yes

Jeff Butts wrote:

Next came the critical part: editing the smb.conf file to add a Time Machine-compatible share. This required setting the right flags, specifically fruit:time machine = yes and vfs objects = catia fruit streams_xattr, to mimic the behavior of Apple’s proprietary sharing protocol.

Samba time machine

When ducking for “samba time machine” we find those.

Stefan Johner wrote (redacted to keep the focus on Apple compatibility):

[global]
# Fruit global config
  fruit:aapl = yes
  fruit:nfs_aces = no
  fruit:copyfile = no
  fruit:model = MacSamba
...
# Protocol versions
  client max protocol = default
  client min protocol = SMB2_02
  server max protocol = SMB3
  server min protocol = SMB2_02
...

[timemachine]
  # Load in modules (order is critical!)
  vfs objects = catia fruit streams_xattr
  fruit:time machine = yes
  fruit:time machine max size = 300G
  comment = Time Machine Backup
  path = /mnt/timemachine
  available = yes
  valid users = timemachine
  browseable = yes
  guest ok = no
  writable = yes

J. Patrick Fulton wrote:

[global]
min protocol = SMB2
vfs objects = catia fruit streams_xattr
fruit:nfs_aces = no
fruit:metadata = stream
fruit:model = MacSamba
fruit:posix_rename = yes
fruit:veto_appledouble = no
fruit:wipe_intentionally_left_blank_rfork = yes
fruit:delete_empty_adfiles = yes
server min protocol = SMB2

[backupshare]
comment = Apple Backup Shared Folder
path = /mnt/samba/applebackups
fruit:time machine = yes
force user = smbuser
force group = smbgroup
read only = no
browseable = yes
create mask = 0664
force create mode = 0664
directory mask = 0775
force directory mode = 0775

Sven Reifschneider wrote:

[global]
security = user
wide links = yes
unix extensions = no
vfs object = acl_xattr catia fruit streams_xattr
fruit:nfc_aces = no
fruit:aapl = yes
fruit:model = MacSamba
fruit:posix_rename = yes
fruit:metadata = stream
fruit:delete_empty_adfiles = yes
fruit:veto_appledouble = no
spotlight = yes

[TimeMachine]
path = /media/Backup/TimeMachine
available = yes
writable = yes
guest ok = no
valid users = (your-username)
vfs objects = catia fruit streams_xattr
fruit:time machine = yes
fruit:time machine max size = 250G

Reference documentation

Samba man pages, version 4.22, latest at the time of writing:

Samba wiki:

Parameters useful for Time Machine

path = /mnt/backups
Path to the volume storage.
valid users = username
Name the user owning the share.
read only = no or writeable = yes
Allow writing to the share.
vfs objects = fruit
Turn on support for Apple SMB2+ extensions.
fruit:time machine = yes
Advertise Time Machine support for this volume, and modify some low-level settings.

Uneeded parameters for Time Machine

Many of the uneeded parameters would be useful when using Samba as an actual file server with macOS clients, as in actually used to store and share documents. Since Time Machine only uses SMB to store and access a sparse bundle disk image, its requirements are much simpler than a full client.

vfs objects = catia fruit *************
vfs_catia supports file names that are not otherwise supported by SMB because they contain forbidden punctuation, like : or ". This might be useful if the name of the Mac contains such a punctuation, and if macOS does not remove the punctuation in the name of the sparse bundle directory. Otherwise it is not needed to access the content of a sparse bundle.
vfs objects = ***** fruit streams_xattr
vfs_streams_xattr is explicitly required in the vfs_fruit man page. It is needed to support extended filesystem attributes, which are used by macOS. Useful for a file server, irrelevant for Time Machine.
browseable = yes
Default value.
guest ok = no
Default value.
write list = username
The default value is empty, it appears to accept all valid users.
create mask, directory mask, force create mode, force directory mode
Override default permission masks. This is irrelevant for Time Machine. It can be useful on a file server, but this very much depends on the situation.
force user, force group
Override the UNIX user. Irrelevant for time machine. Can be useful on a file server, depending on the situation.
fruit:nfs_aces = no
Disable support for querying and modifying UNIX modes of directory entries. Another file server feature, situation dependent.
fruit:aapl = yes
Default value.
spotlight = yes
Support Spotlight queries. Useful for a file server, irrelevant for Time Machine.
public = yes, or guest ok = yes
No password is required for this service. That can make sense, since Time Machine supports encrypting archives. Use this in place of specifying valid users, if you prefer. The downside is allowing anyone on the local network to destroy your Time Machine data.
client max protocol, client min protocol
Configuration for the SMB client. Irrelevant. Also, the defaults are fine.
server max protocol, server min protocol, max protocol, min protocol
Control protocol negotiation. The defaults in current Samba releases are fine, no need to modify them.
fruit:time machine max size
Limit the reported disk size. This can be useful to enforce quotas on a multi-user server. For personal use, a disk usage limit can be configured at the creation of the Time Machine archive.
available = yes
Default value.
fruit:metadata = stream
Delegate metadata stream processing to vfs_streams_xattr. This is needed to support files with very large extended attribute data. Useful for a file server, irrelevant for Time Machine.
fruit:model = MacSamba
Default value.
fruit:posix_rename = yes
Option removed in Samba 4.22.0. Reports of this option being needed on archive creation are apparently outdated.
fruit:veto_appledouble = no
fruit:wipe_intentionally_left_blank_rfork = yes
fruit:delete_empty_adfiles = yes
Modify the handling of resource forks. Only relevant with MacOS Classic, irrevelant for Time Machine.