Skip to content

Instantly share code, notes, and snippets.

@polynomialspace
Last active January 20, 2023 21:33
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save polynomialspace/2ab53b9fa624f45146cb4ae55ac79f77 to your computer and use it in GitHub Desktop.
Save polynomialspace/2ab53b9fa624f45146cb4ae55ac79f77 to your computer and use it in GitHub Desktop.
Time Machine on Linux with Samba (4.11). Install avahi and this should 'just work'.
[global]
workgroup = Time Machine
netbios name = Time Machine
security = user
passdb backend = tdbsam
# Supposedly turning signing off may increase performance for TM.
# May require changes on client side, set to auto if issues occur.
# See: https://support.apple.com/en-us/HT205926
# Note that this is disabling a security feature. Only use on a
# "trusted" connection (like your home network).
server signing = no
# Many guides also suggest modifying the buf options, but Samba's
# official documentation advises against this as manual tuning
# is often more effort than its worth compared to modern kernel
# auto tuning. Also consider IPTOS_THROUGHPUT.
# Note that IPTOS_* options are Layer 3 QoS options, so if you're
# on the same LAN, these will likely make no difference.
socket options = IPTOS_LOWDELAY
# This is just to have a neat little icon in Finder.
vfs objects = catia fruit streams_xattr
fruit:model = TimeCapsule
[Tempore Ex Machina]
comment = Time Machine
path = /mnt/backup
browseable = yes
writeable = yes
create mask = 0600
directory mask = 0700
vfs objects = catia fruit streams_xattr
fruit:aapl = yes
fruit:time machine = yes
fruit:metadata = stream
fruit:veto_appledouble = no
fruit:wipe_intentionally_left_blank_rfork = yes
fruit:delete_empty_adfiles = yes
# No idea if this actually works, there's apparently significant setup
# needed outside of smb, but nothing breaks horribly so far with it on.
spotlight = yes
# Pass larger chunks directly to kernel recvfile, as well as use async I/O.
# Unsure if these options counter each other, but these seemed to have a
# significant improvement.
min receivefile size = 16384
aio write size = 16384
aio read size = 16384
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment