diff --git a/Dockerfile b/Dockerfile index c5c7195..09a29c3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -46,7 +46,7 @@ RUN file="/etc/samba/smb.conf" && \ getwd cache = yes min receivefile size = 16384 socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072 - vfs objects = catia fruit recycle streams_xattr + vfs objects = catia recycle # Recycle bin recycle:keeptree = yes @@ -62,12 +62,6 @@ RUN file="/etc/samba/smb.conf" && \ server max protocol = SMB3 server min protocol = SMB2_10 - # Time Machine - fruit:delete_empty_adfiles = yes - fruit:time machine = yes - fruit:veto_appledouble = no - fruit:wipe_intentionally_left_blank_rfork = yes - EOF # Cleanup diff --git a/samba.sh b/samba.sh index 4720cfd..80ae6bd 100755 --- a/samba.sh +++ b/samba.sh @@ -208,6 +208,25 @@ workgroup() { local workgroup="$1" sed -i 's|^\( *workgroup = \).*|\1'"$workgroup"'|' "$SMB_CONF" } +### timemachine: enable Time Machine support for macOS +# Arguments: +# none) +# Return: result +timemachine() { + # Add fruit and streams_xattr to vfs objects + sed -i 's/\(vfs objects = catia\)/\1 fruit streams_xattr/' "$SMB_CONF" + + # Add Time Machine configuration + sed -i '/\[global\]/a \ + fruit:aapl = yes\ + fruit:metadata = stream\ + fruit:model = TimeCapsule6,116\ + fruit:delete_empty_adfiles = yes\ + fruit:time machine = yes\ + fruit:veto_appledouble = no\ + fruit:wipe_intentionally_left_blank_rfork = yes' "$SMB_CONF" +} + ### widelinks: allow access wide symbolic links # Arguments: # none) @@ -238,6 +257,7 @@ Options (fields in '[]' are optional, '<>' are required): -p Set ownership and permissions on the shares -r Disable recycle bin for shares -S Disable SMB2 minimum version + -t Enable Time Machine support for macOS -s \"[;browse;readonly;guest;users;admins;writelist;comment]\" Configure a share required arg: \";\" @@ -275,7 +295,7 @@ The 'command' (if provided and valid) will be run instead of samba [[ "${USERID:-""}" =~ ^[0-9]+$ ]] && usermod -u $USERID -o smbuser [[ "${GROUPID:-""}" =~ ^[0-9]+$ ]] && groupmod -g $GROUPID -o smb -while getopts ":hc:G:g:i:nprs:Su:Ww:I:" opt; do +while getopts ":hc:G:g:i:nprs:Stu:Ww:I:" opt; do case "$opt" in h) usage ;; c) charmap "$OPTARG" ;; @@ -287,6 +307,7 @@ while getopts ":hc:G:g:i:nprs:Su:Ww:I:" opt; do r) recycle ;; s) parse_args "$OPTARG"; share "${PARSED_ARGS[@]}" ;; S) smb ;; + t) timemachine ;; u) parse_args "$OPTARG"; user "${PARSED_ARGS[@]}" ;; w) workgroup "$OPTARG" ;; W) widelinks ;; @@ -310,6 +331,7 @@ while read i; do parse_args "$i"; share "${PARSED_ARGS[@]}" done < <(env | awk '/^SHARE[0-9=_]/ {sub (/^[^=]*=/, "", $0); print}') [[ "${SMB:-""}" ]] && smb +[[ "${TIMEMACHINE:-""}" ]] && timemachine while read i; do parse_args "$i"; user "${PARSED_ARGS[@]}" done < <(env | awk '/^USER[0-9=_]/ {sub (/^[^=]*=/, "", $0); print}')