/Installation/OS Specific Notes/Installing Amanda on Mac OS X
Amanda has been tested to run on both Mac OS X Panther (10.3) and Tiger (10.4).
With Panther, the built-in tar does not record extended filesystem attributes (resource forks, finder flags, ACLs, and so on), so users who want to be able to restore those attributes will need to do some extra work (see below). Fortunately, Tiger's tar does support extended attributes, so an amanda installation will work "out of the box".
This page is summarized from writeups by Steven Karel and Dustin's work on Amanda.
General Setup
Set Up 'amanda' User
The following steps use 'niutil' to set up Amanda in the netinfo database, and then creae a home directory for the new user.
sudo niutil -create / /users/amanda sudo niutil -createprop / /users/amanda shell /bin/bash sudo niutil -createprop / /users/amanda realname "Backup User" sudo niutil -createprop / /users/amanda uid 5000 sudo niutil -createprop / /users/amanda gid 0 sudo niutil -createprop / /users/amanda home /Users/amanda sudo ditto -rsrcFork '/System/Library/User Template/English.lproj/' /Users/amanda sudo sh -c "echo 'amanda_server.domain.com amanda' > /Users/amanda/.amandahosts" sudo chown -R amanda:wheel /Users/amanda sudo passwd amanda
Replace amanda_server.domain.com in the above with the name of your amanda server. This file is used as a basic security check to control which hosts can access amandad on this client.
System Tweaks
Add the following lines at the appropriate place in /etc/services (this isn't strictly necessary if you're not using kerberos security and the machine will only be an amanda client):
kamanda 10081/tcp # amanda backup services (Kerberos) kamanda 10081/udp # amanda backup services (Kerberos) amandaidx 10082/tcp # amanda backup services amidxtape 10083/tcp # amanda backup services
Create /etc/amandates:
sudo touch /etc/amandates sudo chmod 660 /etc/amandates sudo chown -R amanda.wheel /etc/amandates
And set up some directories where Amanda can store small bits of data:
# TODO: get paths right for no --prefix sudo mkdir -p /usr/local/lib/amanda sudo touch /usr/local/lib/amanda/exclude.gtar sudo mkdir -p /usr/local/var/amanda/gnutar-lists/ sudo chown -R amanda:wheel /usr/local/lib/amanda /usr/local/var/amanda/
Compile Amanda
Download and untar Amanda, then run ./configure as follows:
./configure --with-user=amanda --with-group=wheel
You will want to examine ./configure --help first to see what other options are available. For example:
- --without-server
- just build the client components
- --prefix
- install somewhere other than /usr/local, etc.
- --with-config
- set the default configuration
- --with-gnutar
- give the path to GNU tar (especially useful on Panther; see below)
- --without-xsltproc
- don't build the manpages from XML (the XML parser is flaky)
This tutorial assumes that --prefix is left at the default, which installs everything (including configuration and state) under /usr/local. This helps to segregate amanda's information from files managed by Apple, and is probably best for end-user machines. If you will be actively working with the amanda configuration on these machines, you may want to consider:
- --sysconfdir=/etc
- store configuration in the usual place under /etc/amanda and /etc/amandates.
- --localstatedir=/var
- store state in the usual place under /var/amanda.
If you make these changes, you'll need to adjust the directories created in above.
To compile and install, follow the usual
make sudo make install
Version-Specific Notes
Tiger
To get amandad to run when packets from the server arrive, you'll need a launchd script. See Apple's Getting started with launchd for background on this system.
Steven Karel has supplied a handy property list here, on which this version is based. You'll need to edit these slightly to give the correct path to amandad. The first runs amandad with BSDTCP authentication; the second uses BSDUDP authentication. These files will be available in contrib/macosx in an upcoming release.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>org.amanda.amandad.bsdtcp</string> <key>UserName</key> <string>amanda</string> <key>GroupName</key> <string>wheel</string> <key>InitGroups</key> <true/> <key>ProgramArguments</key> <array> <string>/usr/local/libexec/amandad</string> <string>-auth=bsdtcp</string> </array> <key>Sockets</key> <dict> <key>ipv4</key> <dict> <key>SockFamily</key> <string>IPv4</string> <key>SockServiceName</key> <string>amanda</string> <key>SockType</key> <string>stream</string> </dict> <key>ipv6</key> <dict> <key>SockFamily</key> <string>IPv6</string> <key>SockServiceName</key> <string>amanda</string> <key>SockType</key> <string>stream</string> </dict> </dict> <key>inetdCompatibility</key> <dict> <key>Wait</key> <false/> </dict> </dict> </plist>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>GroupName</key> <string>wheel</string> <key>InitGroups</key> <true/> <key>Label</key> <string>org.amanda.amandad.bsdudp</string> <key>ProgramArguments</key> <array> <string>/usr/local/libexec/amandad</string> <string>-auth=bsdudp</string> </array> <key>Sockets</key> <dict> <key>ipv4</key> <dict> <key>SockFamily</key> <string>IPv4</string> <key>SockServiceName</key> <string>amanda</string> <key>SockType</key> <string>dgram</string> </dict> <key>ipv6</key> <dict> <key>SockFamily</key> <string>IPv6</string> <key>SockServiceName</key> <string>amanda</string> <key>SockType</key> <string>dgram</string> </dict> </dict> <key>UserName</key> <string>amanda</string> <key>inetdCompatibility</key> <dict> <key>Wait</key> <true/> </dict> </dict> </plist>
Copy one or both of the property lists to /Library/LaunchDaemons, and load them with
sudo launchctl load -w /Library/LaunchDaemons/org.amanda.amandad.bsdudp.plist
You should see the following output from netstat:
me@mac ~ $ netstat -na | grep 10080 udp6 0 0 *.10080 *.* udp4 0 0 *.10080 *.*
(or tcp6/4 for BSDTCP).
Panther
A user reports that for some versions of Mac OS X you may need to increase the UDP packetsize, as explained in UDP packet too large.
To support extended attributes on Panther,
- install either xtar or, if that doesn't work, hfstar
- compile Amanda, with the addition of the --with-gnutar=/path/to/new/tar flag to ./configure, giving the location of the new tar
To run amandad on Panther, you need to install an xinetd configuration snippet; create /etc/xinet.d/amanda with the following contents:
service amanda { socket_type = dgram protocol = udp wait = yes user = amanda server = /usr/local/libexec/amandad server_args = amandad groups = yes disable = no }
(where server is the path at which you've installed amandad)
To start the service in xinetd:
service amanda start
If you have trouble, you may want to check that xinetd is running on the machine.