AMANDA.CONF(5)

πŸ’– AMANDA.CONF(5) β€” File formats and conventions: the main Amanda config file πŸ’–

πŸŽ€ NAME πŸŽ€

amanda.conf β€” Main configuration file for Amanda, the Advanced Maryland Automatic Network Disk Archiver.

✨ DESCRIPTION ✨

Okay so amanda.conf(5) is literally the main configuration file for Amanda. This manpage lists the relevant sections and parameters of this file for quick reference, bestie.

The file <CONFIG_DIR>/amanda.conf is loaded if it exists then the files <CONFIG_DIR>/<config>/amanda.conf is loaded.


🌸 SYNTAX 🌸

There are a number of configuration parameters that control the behavior of the Amanda programs. All have default values, so you need not specify the parameter in amanda.conf if the default is suitable. Slay.

πŸ’¬ COMMENTS πŸ’¬

Lines starting with # are ignored, as are blank lines. Comments may be placed on a line with a directive by starting the comment with a #. The remainder of the line is ignored.

πŸ”‘ KEYWORDS AND IDENTIFIERS πŸ”‘

Keywords are case insensitive, i.e. mailto and MailTo are treated the same. Also, the characters - and _ are interchangeable in all predefined Amanda keywords: device_property and device-property have the same meaning. This manpage uses the dashed versions, but the underscored versions will be accepted for backward compatibility.

Identifiers are names which are defined in the configuration itself, such as dumptypes or interfaces. Identifiers are case-insensitive, but sensitive to - vs. _. Identifiers should be quoted in the configuration file, although for historical reasons, the quotes are optional.

Strings are always quoted with double quotes ("), and any double quotes or backslashes within the string are escaped with a backslash:

tapelist "/path/to/tapelist"
property "escaped-string" "escaping: \\ (backslash) and \" (double-quote)"

To summarize, then:

                                 # QUOTES        CASE            -/_
       logdir "logs"             # required      sensitive       sensitive
       send-amreport-on strange  # prohibited    insensitive     insensitive
       tapetype "EXABYTE"        # optional      insensitive     sensitive

       define dumptype "dt" {    # optional      insensitive     sensitive
         "dumptype-common"       # optional      insensitive     sensitive
         strategy noinc          # prohibited    insensitive     insensitive
       }

πŸ“ VALUE SUFFIXES πŸ“

Integer arguments may have one of the following (case insensitive) suffixes, some of which have a multiplier effect:

  • b, byte, bytes β€” Some number of bytes.
  • bps β€” Some number of bytes per second.
  • k, kb, kbyte, kbytes, kilobyte, kilobytes β€” Some number of kilobytes (bytes*1024).
  • kps, kbps β€” Some number of kilobytes per second (bytes*1024).
    • It is the default multiplier for all size options.
  • m, mb, meg, mbyte, mbytes, megabyte, megabytes β€” Some number of megabytes (bytes*1024*1024).
  • mps, mbps β€” Some number of megabytes per second (bytes*1024*1024).
  • g, gb, gbyte, gbytes, gigabyte, gigabytes β€” Some number of gigabytes (bytes*1024*1024*1024).
  • t, tb, tbyte, tbytes, terabyte, terabytes β€” Some number of terabytes (bytes*1024*1024*1024*1024).
  • tape, tapes β€” Some number of tapes.
  • day, days β€” Some number of days.
  • week, weeks β€” Some number of weeks (days*7).
Note β€” The value inf may be used in most places where an integer is expected to mean an infinite amount.

Boolean arguments may have any of the values 1, y, yes, t, true or on to indicate a true state, or 0, n, no, f, false or off to indicate a false state. If no argument is given, true is assumed.

πŸ”„ PARAMETER ORDER πŸ”„

In general, the order in which parameters occur in the configuration file does not matter, with the exception of subsection inheritance. For example, if dumptype "normal-encrypt" which inherits from dumptype "normal", then "normal" must appear first in the configuration file.

🧡 STRINGS 🧡

Quoted strings in Amanda follow a common, C-like syntax. Printable characters and whitespace are kept as-is, except that the backslash character (\) is used as an escape character, and a double-quote ends the string. The allowed escape sequences are

ESCAPE SEQUENCE     BECOMES
\\                  \
\"                  "
\n                  (newline)
\t                  (tab)
\r                  (carriage return)
\f                  (form-feed)
\1 - \7
\01 - \77
\001 - \377         (character specified in octal)

Illegally quoted strings are handled on a "best-effort" basis, which may lead to unexpected results.

Examples:

finserver "/data/finance/XYZ Corp's \"real\" finances" finance-high eth0 -1
property "syspath" "C:\\WINDOWS\\SYSTEM"

🌱 SUBSECTIONS AND INHERITANCE 🌱

Amanda configuration files may include various subsections, each defining a set of configuration directives. Each type of subsection is described below. Note that all types of subsections can inherit from other subsections of the same type by naming the "parent" section in the "child" subsection. For example:

define dumptype global {
    record yes
    index yes
}

define dumptype nocomp {
    global      # inherit the parameters in dumptype 'global'
    compress none
}

Note that multiple inheritance is also supported by simply naming multiple parent sections in a child. Parents are implicitly expanded in place in a child, and the last occurrence of each parameter takes precedence. For example,

define tapetype par1 {
    comment "Parent 1"
    filemark 8k
    speed 300bps
    length 200M
}
define tapetype par2 {
    comment "Parent 2"
    filemark 16k
    speed 400bps
}
define tapetype child {
    par1
    par2
    filemark 32k
}

In this example, 'child' will have a filemark of 32k, a speed of 400bps, and a length of 200M.


🌍 GLOBAL PARAMETERS 🌍

  • amrecover-changer string β€” Default: not set. Amrecover will use the changer if you use 'settape <string>' and that string is the same as the amrecover-changer setting.
  • amrecover-check-label bool β€” Deprecated; amrecover always checks the label, and does not invoke amrestore.
    • Default: on. Amrecover will call amrestore with the -l flag to check the label.
  • amrecover-do-fsf bool β€” Deprecated; amrecover always uses fsf, and does not invoke amrestore.
    • Default: on. Amrecover will call amrestore with the -f flag for faster positioning of the tape.
  • autoflush no|yes|all β€” Default: no. Whether an amdump run will flush the dumps from holding disk to tape. With yes, only dump matching the command line argument are flushed. With all, all dump are flushed.
  • autolabel string [any] [other-config] [non-amanda] [volume-error] [empty] β€” Default: not set. When set, this directive will cause Amanda to automatically write an Amanda tape label to most volume she encounters. This option is DANGEROUS because when set, Amanda may erase near-failing tapes or tapes accidentally loaded in the wrong slot.

When using this directive, specify the template for new tape labels. The template can contain many variables that are substituted by their values:

  • $c : config name
  • $o : org configuration
  • $b : barcode of the volume
  • $s : slot number, can specify a minimum number of digit: $3s to get '001'
  • $m : meta label
  • $r : storage name

The template can contain some number of contiguous '%' characters, which will be replaced with a generated number (000-999), or some number of contiguous '!', which will be replaced with a generated letter sequence (AAA-ZZZ). Be sure to specify enough '%' or '!' characters that you do not run out of tape labels. Example: "DailySet1-%%%", "DailySet1-!!!", "$c-%%%", "$m-%%%", "$m-$b".

The generated label can be used only if it match the labelstr setting. The volume will not be used if the generated label doesn't match the labelstr setting.

Note that many devices cannot distinguish an empty tape from an error condition, so it may often be necessary to include volume-error as an autolabel condition.

  • any β€” equivalent to 'other-config non-amanda volume-error empty'
  • other-config β€” Label volumes with a valid Amanda label that do not match our labelstr. Danger: this may erase volumes from other Amanda configurations without warning!
  • non-amanda β€” Label volumes which do not start with data that resembles an Amanda header. Danger: this may erase volumes from other backup applications without warning!
  • volume-error β€” Label volumes where an error occurs while trying to read the label. Danger: this may erase arbitrary volumes due to transient errors.
  • empty β€” Label volumes where a read returns 0 bytes.
  • bumpdays int β€” Default: 2 days. To insure redundancy in the dumps, Amanda keeps filesystems at the same incremental level for at least bumpdays days, even if the other bump threshold criteria are met.

The global setting of this parameter can be overwritten inside of a dumptype-definition.

  • bumpmult float β€” Default: 1.5. The bump size multiplier. Amanda multiplies bumpsize by this factor for each level. This prevents active filesystems from bumping too much by making it harder to bump to the next level. For example, with the default bumpsize and bumpmult set to 2.0, the bump threshold will be 10 Mbytes for level one, 20 Mbytes for level two, 40 Mbytes for level three, and so on.

The global setting of this parameter can be overwritten inside of a dumptype-definition.

  • bumppercent int β€” Default: 0. The minimum savings required to trigger an automatic bump from one incremental level to the next, expressed as percentage of the current size of the DLE (size of current level 0). If Amanda determines that the next higher backup level will be this much smaller than the current level, it will do the next level.

If this parameter is set to 0, the value of the parameter bumpsize is used to trigger bumping.

The global setting of this parameter can be overwritten inside of a dumptype-definition.

See also the options bumpsize, bumpmult and bumpdays.

πŸŒ€ bumpsize int

Default: 10 Mbytes. Okay so this is the minimum savings you need before Amanda will be like "bestie, we're bumping this up a level" β€” automatic bump from one incremental level to the next, all expressed as a size. If Amanda peeps that the next higher backup level is gonna come out this much smaller than the current level, she'll just go ahead and do the next level. ✨ Ngl, the value of this parameter only matters if bumppercent is set to 0.

The default unit is Kbytes if you don't specify one. πŸŽ€

The global setting of this parameter can be overwritten inside of a dumptype-definition.

See also the options bumppercent, bumpmult and bumpdays.


πŸŽ›οΈ changerdev string

Default: "dev/null". It's a tape changer configuration parameter, and how you actually use it totally depends on the particular changer you defined with the tpchanger option. iykyk πŸ’…


πŸ“Ό changerfile string

Default: "changer". ⚠️ Heads up bestie β€” this option is deprecated; use the changerfile in the changer section instead. Only chg-multi uses it. It's the file where the changer stores its state.


πŸ“Š columnspec string

default: "HostName=0:-12:12,Disk=1:-11:11,Level=1:-1:1,OrigKB=1:-7:0,OutKB=1:-7:0,Compress=1:-6:1,DumpTime=1:-7:7,Dumprate=1:-6:1,TapeTime=1:-6:6,TapeRate=1:-6:1"

This one defines the width of the columns amreport should use. The string is a comma (,) separated list of triples. Each triple consists of four parts, separated by an equal sign (=) and a colon (:) β€” peep the example below 🫢. Those four parts specify:

  1. the name of the column, which may be:
    • Compress (compression ratio)
    • Disk (client disk name)
    • DumpRate (dump rate in KBytes/sec)
    • DumpTime (total dump time in hours:minutes)
    • HostName (client host name)
    • Level (dump level)
    • OrigKB (original image size in KBytes)
    • OutKB (output image size in KBytes)
    • TapeRate (tape writing rate in KBytes/sec)
    • TapeTime (total tape time in hours:minutes)
  2. the amount of space to display before the column (this is how you get whitespace between columns, no cap).
  3. the width of the column itself. Set it to a negative value and the width gets calculated on demand to fit the largest entry in that column. slay.
  4. the precision of the column β€” number of digits after the decimal point for a number.

Parts may be omitted and will adopt a default value; trailing colons may also be omitted. πŸ’–

Here's an example:

columnspec "Disk=1:18,HostName=0:10,OrigKB=::2,OutKB=1:7"

The above will display the disk information in 18 characters and put one space before it. The hostname column will be 10 characters wide with no space to the left. The Original KBytes print 2 decimal digits. The output KBytes column is seven characters wide with one space before it. Iconic formatting tbh ✨


πŸ“ command-file string

Default: command_file. A file where amanda stores information about running jobs. Very main character of her.

See amanda-command-file(5).


πŸ—œοΈ compress-index boolean

Default: yes. Compress all index files β€” this is useful to save space in the indexdir but requires more processing. The compression ratio is generaly above 20x, and it's actually faster to read compressed index files because there's 20 times less data to read from disk. πŸš€

Changing this setting will uncompress/compress all index files. So yeah, it's giving "commit to the bit."


πŸ” connect-tries int

Default: 3. How many times the server will try a connection. Three strikes energy, literally.


⏳ ctimeout int

Default: 30 seconds. The maximum amount of time that amcheck will wait for each client host. Don't leave her hanging πŸ’…


πŸ› debug-auth int

Default: 0. Debug level of the auth module.

πŸ› debug-chunker int

Default: 0. Debug level of the chunker process.

πŸ› debug-days int

Default: 3. The number of days the debug files are kept.

πŸ› debug-driver int

Default: 0. Debug level of the driver process.

πŸ› debug-dumper int

Default: 0. Debug level of the dumper process.

πŸ› debug-event int

Default: 0. Debug level of the event module.

πŸ› debug-holding int

Default: 0. Debug level of the holdingdisk module.

πŸ› debug-planner int

Default: 0. Debug level of the planner process.

πŸ› debug-protocol int

Default: 0. Debug level of the protocol module.

πŸ› debug-recovery int

Default: 1. Debug level of all recovery process. (Yes, she's the one that ships turned up to 1, no cap.)

πŸ› debug-taper int

Default: 0. Debug level of the taper process.


🧠 device-output-buffer-size int

Default: 1280k. Controls the amount of memory used by Amanda to hold data as it is read from the network or disk before it is written to the output device. Higher values may be useful on fast tape drives and optical media. πŸ”₯

The default unit is bytes if you don't specify one.


🏷️ device-property string string

These options can set various device properties. See amanda-devices(7) for more information on device properties and their syntax. Both strings are always quoted; the first string contains the name of the property to set, and the second contains its value. For example, to set a fixed block size of 128k, write:

device-property "BLOCK_SIZE" "128k"

Two strings, zero ambiguity. Obsessed. πŸŽ€


πŸ“‹ diskfile string

Default: "disklist". The file name for the disklist file holding client hosts, disks and other client dumping information.


πŸ“ displayunit "k|m|g|t"

Default: "k". The unit used to print many numbers β€” k=kilo, m=mega, g=giga, t=tera. Pick your vibe. πŸ’œ


πŸ’€ dtimeout int

Default: 1800 seconds. The amount of idle time per disk on a given client that a dumper running from within amdump will wait before it fails with a data timeout error. That's a lot of idle time before she gives up on you 😭


πŸ—“οΈ dumpcycle int

Default: 10 days. The number of days in the backup cycle. Each disk will get a full backup at least this often. Setting this to zero tries to do a full backup each run. fr fr, every single run.

Note 🫢 This parameter may also be set in a specific dumptype (see below). This value sets the default for all dumptypes so it must appear in amanda.conf before any dumptypes are defined.

🎯 dumporder string

Default: "tttTTTTTTT". The priority order of each dumper:

  • s: smallest size
  • S: largest size
  • t: smallest time
  • T: largest time
  • b: smallest bandwidth
  • B: largest bandwidth

Lowercase = smallest, uppercase = largest. Cute little case system, honestly πŸ’…


πŸ‘€ dumpuser string

Default: "amanda". The login name Amanda uses to run the backups. The backup client hosts must allow access from the tape server host as this user via .rhosts or .amandahosts, depending on how the Amanda software was built. Don't leave her knocking at the door πŸ™ˆ


⏏️ eject-volume bool

Default: no. Set to yes if you want the volume to be ejected after Amanda wrote data to it. Heads up though β€” it works only with some changer and device. Like, some. Not all. Don't @ me.


⏱️ etimeout int

Default: 300 seconds. The amount of time per estimate on a given client that the planner step of amdump will wait to get the dump size estimates (note: Amanda runs up to 3 estimates for each DLE). For instance, with the default of 300 seconds and four DLE's, each estimating level 0 and level 1 on client A, planner will wait up to 40 minutes for that machine. Bestie that's a whole episode of something 😭

A negative value will be interpreted as a total amount of time to wait per client instead of per disk. Sneaky little sign flip, iconic.


🚰 flush-threshold-dumped int

Default: 0. Amanda will not begin writing data to a new volume until the amount of data on the holding disk is at least this percentage of the volume size and the criterion for flush-threshold-scheduled is also met. In other words, Amanda will not begin until the amount of data on the holding disk is greater than the tape length times this parameter. This parameter may be larger than 100%, for example to keep more recent dumps on the holding disk for faster recovery. Keeping the recent stuff close, we love a backup with separation anxiety πŸ’–

Needless to say, your holding disk must be big enough that this criterion could be satisfied. If the holding disk cannot be used for a particular dump (because, for example, there is no remaining holding space) then Amanda will disregard the constraint specified by this setting and start a new volume anyway. Once writing to a volume has begun, this constraint is not applied unless and until a new volume is needed.

The value of this parameter may not exceed that of the flush-threshold-scheduled parameter.


🚿 flush-threshold-scheduled int

Default: 0. Amanda will not begin writing data to a new volume until the sum of the amount of data on the holding disk and the estimated amount of data remaining to be dumped during this run is at least this percentage of the volume size and the criterion for flush-threshold-dumped is also met. In other words, Amanda will not begin until the inequality h + s > t Γ— d is satisfied, where h is the amount of data on the holding disk, s is the total amount of data scheduled for this run but not dumped yet, t is the capacity of a volume, and d is this parameter, expressed as a percentage. This parameter may be larger than 100%. Math bestie rights 🧚

Needless to say, your holding disk must be big enough that this criterion could be satisfied. If the holding disk cannot be used for a particular dump (because, for example, there is no remaining holding space) then Amanda will disregard the constraint specified by this setting and start a new volume anyway. Once writing to a volume has begun, this constraint is not applied unless and until a new volume is needed.

The value of this parameter may not be less than that of the flush-threshold-dumped or taperflush parameters. So the two thresholds are in a whole situationship β€” they have to agree with each other 🫢


πŸ“Ž includefile string

Default: no default. The name of an Amanda configuration file to include within the current file. Useful for sharing dumptypes, tapetypes and interface definitions among several configurations. Relative pathnames are relative to the configuration directory. Sharing is caring, periodt ✨


πŸ—‚οΈ indexdir string

Default "/usr/adm/amanda/index". The directory where index files (backup image catalogues) are stored. Index files are only generated for filesystems whose dumptype has the index option enabled. No index option, no index files β€” that's the whole deal πŸ’…


πŸ—ƒοΈ infofile string

Default: "/usr/adm/amanda/curinfo". The file or directory name for the historical information database. If Amanda was configured to use DBM databases, this is the base file name for them. If it was configured to use text formatted databases (the default), this is the base directory and within here will be a directory per client, then a directory per disk, then a text file of data. Nested like those little Russian dolls, except each one is a client and then a disk πŸŽ€

  • inparallel int β€” Default: 10. This is the max number of backups Amanda will try to run at the same time. She stays inside the network-bandwidth and holding-disk limits anyway, so honestly you can set this kinda high and nothing bad happens πŸ’… yeah there's a little contention with big numbers, but it's lowkey tiny on most systems.
  • interactivity string β€” Default: not set. The interactivity module Amanda uses to talk to you, the human 🫢 peek at amanda-interactivity(7) for the list of modules.
  • labelstr string | MATCH-AUTOLABEL β€” Default: MATCH-AUTOLABEL. The regular expression that every tape label has to match β€” every label generated (see amlabel(8)) and every label this configuration uses. All autolabel variables work in it. The keyword MATCH-AUTOLABEL uses the autolabel template as the expression, iconic ✨

Real talk: if multiple configurations run off the same tape server host, set them to different strings (like "DAILY[0-9][0-9]*" vs. "ARCHIVE[0-9][0-9]*") so they don't overwrite each other's tapes 😭

  • label-new-tapes string β€” Deprecated 🚩 use the autolabel option with options volume-error empty to get the equivalent behavior. Default: not set. When it is set, Amanda automatically slaps an Amanda tape label on any blank tape she runs into.
  • logdir string β€” Default: "/usr/adm/amanda". The directory for the amdump and log files πŸ“
  • mailer string β€” Default found by configure. A mail program that can send mail with 'MAILER -s "subject" user < message_file'.
  • mailto string β€” Default: none. A space-separated list of who gets the mail reports. If you don't specify it, amdump sends zero mail, silence is golden πŸ™ˆ
  • maxdumps int β€” Default: 1. The max number of backups from a single host that Amanda will try to run in parallel. Also see the inparallel option.

Heads up: you can also set this in a specific dumptype (see below). This value is the default for all dumptypes, so it must appear in amanda.conf before any dumptypes are defined ⚠️

  • maxdumpsize int β€” Default: runtapes*tape-length. Max number of bytes the planner will schedule for a run. Default unit is Kbytes if you don't specify one.
  • max-dle-by-volume int β€” Default: 1000000000. The max number of dle written to a single volume.
  • meta-autolabel string β€” Default: not set. When set, and if the changer supports meta-label, this makes Amanda automatically add a meta-label to a meta-volume ✨

A meta-volume is a container that holds a bunch of volumes β€” like a removable hard disk for chg-disk, where each hard disk has many slots (volumes). The meta-label is the label you put on the meta-volume.

When you use this directive, give the template for new meta labels. The template can have variables that get substituted with their values:

$c : config name
$o : org configuration
$r : storage name

The template can contain some number of contiguous % characters, which get replaced with a generated number (000-999), or some number of contiguous !, which get replaced with a generated letter sequence (AAA-ZZZ). Be sure to specify enough % characters that you don't run out of meta labels πŸ”₯ Example: "DailySet1-%%%", "DailySet1-!!!", "$o-%%%", "$o-!!!", "$c-!!!",

  • netusage int β€” Default: 80000 Kbps. The max network bandwidth given to Amanda, in Kbytes per second. Also see the interface section 🌐
  • org string β€” Default: "daily". A descriptive name for the configuration. It shows up in the Subject line of mail reports. Each Amanda configuration should have a different string so your mail reports stay distinguishable πŸ’Œ
  • printer string β€” The printer to use when doing tape labels. See the lbl-templ tapetype option.
  • property [append] string string+ β€” These set various properties, and third-party software can use them to stash info in the config file. Both strings are quoted; the first string is the name of the property to set, and the others are its values. The append keyword appends the values to the list of values for that property πŸŽ€
  • recovery-limit [ string | same-host | server ] β€” Default: none (no limitations). This limits which hosts are allowed to do recoveries. Hosts are identified by their authenticated peer name, as described in amanda-auth(7); if that isn't available and the recovery-limit parameter is present, the recovery gets denied πŸ’€ The arguments are strings giving host match expressions (see amanda-match(7)) or the special keywords same-host or server. The same-host keyword needs an exact match to the hostname of the DLE being recovered. The server keyword requires the connection to come from the fqdn of the server. Specifying no arguments at all disables all recoveries from any host, periodt.

Ngl, match expressions can be built to be forgiving of stuff like fully-qualified vs. unqualified hostnames, but same-host demands an exact match, no vibes-based leniency.

The error messages that show up in amrecover are intentionally vague to avoid info leakage πŸ™ˆ go read the amindexd debug log if you want the real reasons a recovery got rejected.

You can refine recovery limits per-DLE with the dumptype parameter of the same name. But note: the default value applies to any dumpfiles for disks that no longer appear in the disklist β€” so leaving the global parameter at its default while setting it for all DLEs is not enough to keep your backups secure 🚨

  • report-format [append] string+ β€” Default: Not set. The formats amdump, amflush and amvault use when they invoke amreport.
  • report-next-media boolean β€” Default: True if max-dle-by-volume is not set, False if it is set. Whether the reporter has to print the list of media expected for the next run.
  • report-use-media boolean β€” Default: True if max-dle-by-volume is not set, False if it is set. Whether the reporter has to print the list of media used in the run.
  • req-tries int β€” Default: 3. How many times the server will resend a REQ packet if it doesn't get the ACK packet πŸ“¨
  • reserve int β€” Default: 100. The chunk of holding-disk space kept in reserve for incremental backups when there's no tape available, as a percentage of the available holding-disk space (0-100). By default, when there's no tape to write to, degraded mode (incremental) backups go to the holding disk. If you want full backups allowed in that case too, lower the amount reserved for incrementals πŸ‘‘
  • reserved-tcp-port int,int β€” Default: --with-low-tcpportrange or 512,1023. Reserved tcp port that will be used (bsdtcp). Range is inclusive.
  • reserved-udp-port int,int β€” Default: --with-udpportrange or 512,1023. Reserved udp port that will be used (bsd, bsdudp). Range is inclusive.
  • runspercycle int β€” Default: same as dumpcycle. The number of amdump runs in dumpcycle days. A value of 0 means the same value as dumpcycle. A value of -1 means guess the number of runs from the tapelist(5) file β€” that's the number of tapes used in the last dumpcycle days / runtapes πŸ€“
  • rest-api-port int β€” No default. The port number the rest server listens to β€” it must be an unused port.
  • runtapes int β€” Default: 1. The max number of tapes used in a single run. If no tape changer is configured, this option isn't used and you should comment it out of the config file βœ‚οΈ

If a tape changer is configured, you can set this higher than one so Amanda writes to more than one tape.

Note this is an upper bound on the number of tapes β€” Amanda may use fewer.

  • send-amreport-on [ all | strange | error | never ] β€” Default: all. Which kinds of messages trigger an email from amreport. amreport is used by amdump and amflush.
    • all β€” send an email on any message.
    • strange β€” send an email on strange or error messages. A strange message is when the dump succeeded but returned one or more errors unknown to Amanda πŸ‘»
    • error β€” send an email only on error messages.
    • never β€” never send an email. peace and quiet πŸ’œ
  • sort-index boolean β€” Default: no. Sort all index files β€” this makes amrecover start faster on big filesystems but it needs more processing at backup time. Changing this setting can sort all index files.
  • storage string+ β€” Default: same as the config name. The list of storages to use β€” the dump goes to these storages πŸ“¦
  • active-storage string+ β€” Default: same as the configured storage setting and the -ostorage= command line setting. The list of storages a dump can be put on. amdump keeps the dump in holding disk if the storage isn't also listed in storage ⚠️
  • tapebufs int β€” Default: 20. This option is deprecated 🚩 use the device-output-buffer-size directive instead. tapebufs works the same way, but the number you specify is multiplied by the device blocksize before use.
  • tapecycle int β€” Default: 15 tapes. Specifies the number of "active" volumes β€” volumes Amanda will not overwrite. Amanda is always down to write to a new volume, but she refuses to overwrite a volume unless at least tapecycle -1 volumes have been written since πŸ‘€

Good administrative practice: set tapecycle slightly lower than the actual number of tapes in use. That way the admin can cope more easily with damaged or misplaced tapes, or schedule adjustments that call for slight tweaks in the rotation order πŸŽ€

⚠️ Note: Amanda is commonly misconfigured with tapecycle equal to the number of tapes per dumpcycle. In that misconfiguration, Amanda may erase a full dump before a new one is completed. Recovery is then impossible. The tapecycle must be at least one tape larger than the number of tapes per dumpcycle 😭😭

The number of tapes per dumpcycle is calculated by multiplying the number of amdump runs per dump cycle runspercycle (the number of amdump runs per dump cycle) and runtapes (the number of tapes used per run). Typically tapecycle is set to two or four times the tapes per dumpcycle.

  • tapedev string β€” Default: "null:". This one's your tape destiny, bestie πŸ’–. You can point it at a device (either writing it out explicitly or by referencing a device definition β€” go peek at amanda-devices(7)), or you can point it at a tape changer (again, explicitly or by referencing a device definition β€” see amanda-changers(7)).
  • tapelist string β€” Default: "tapelist". The filename for the active tapelist(5). Amanda literally maintains this file herself, filling it with all the tea about the active set of tapes πŸ‘‘.
  • taperalgo [ first | firstfit | largest | largestfit | smallest | last ] β€” Default: first. This is the algorithm that decides which dump image gets sent to the taper. Pick your fighter:
    • first β€” First in, first out. Very demure, very chronological.
    • firstfit β€” The first dump image that will fit on the current tape. It's giving practical queen ✨.
    • largest β€” The largest dump image. Big energy only πŸ’….
    • largestfit β€” The largest dump image that will fit on the current tape.
    • smallest β€” The smallest dump image. Little guy rights πŸ₯Ί.
    • last β€” Last in, first out. Chaotic but valid.
  • taperflush int β€” Default: 0. So at the end of a run, Amanda will start a new tape to flush whatever data is left over if there's more data sitting on the holding disk at the end of the run than this setting allows β€” and that amount is given as a percentage of the capacity of a single volume. In other words (yes we're doing math, stay with me 🫢): at the end of a run, Amanda will begin a new tape if the inequality h > t Γ— f is satisfied, where h is the amount of data remaining on the holding disk from this or previous runs, t is the capacity of a volume, and f is this parameter expressed as a percentage. Oh, and this parameter may be greater than 100%.
Bestie, two caveats: the value of this parameter may not exceed that of the flush-threshold-scheduled parameter, and autoflush must be set to 'yes' if taperflush is greater than 0. No cap, those are the rules πŸ”₯.
  • taperscan string β€” Default: traditional. The taperscan module Amanda should use to find a tape to write to. Full menu of modules lives over in amanda-taperscan(7) 🌸.
  • taper-parallel-write int β€” Default: 1. Amanda can write to up to that number of volumes simultaneously at any given time. Heads up though β€” the changer must have as many drives 😭.
  • tapetype string β€” Default: no default. The type of tape drive associated with tapedev or tpchanger. This refers to one of the tapetypes defined in the config file (see below) β€” those specify all the tape parameters like the length, filemark size, and speed of the tape media and device πŸŽ€.
  • tmpdir string β€” Default: none (system default). Set this to a directory with lots of free space if sort in amindexd fails with 'No space left on device'. Been there, felt that πŸ’€.
  • tpchanger string β€” Default: not set. (deprecated 🚩) The tape changer to use. Most of the time you only specify one of tpchanger or tapedev, although for backward compatibility both may be specified if tpchanger gives the name of an old changer script. More on configuring changers in amanda-changers(7) πŸ¦‹.
  • unreserved-tcp-port int,int β€” Default: --with-tcpportrange or 1024,65535. The unreserved tcp port that will be used (bsd, bsdudp). Range is inclusive, periodt ✨.
  • usetimestamps bool β€” Default: Yes. Deprecated β€” the value is always Yes, so don't get cute with it πŸ™ˆ. This option allows Amanda to track multiple runs per calendar day.
  • vault-storage string+ β€” Default: not set. The list of storages to vault to πŸ’œ.

After writing to the storages listed in the storage parameter, amdump will automatically write all pending dumps to the vault storage(s). (These dumps get queued for vaulting based on the vault option specified in the definition section for the primary storage, plus the dump-selection option specified on the vault storage.)

Also, amvault uses the first storage in the vault-storage list as its default destination storage, iykyk 🌈.


πŸŽ€ HOLDINGDISK SECTION πŸŽ€

The amanda.conf file may define one or more holding disks, which act as buffers holding backup images before they get written to tape. The syntax is:

define holdingdisk name {
    holdingdisk-option holdingdisk-value
    ...
}

The { must appear at the end of a line, and the } goes on its own line. That's just the vibe, don't fight it πŸ’….

Name is a logical name for this holding disk.

The options and values are:

  • comment string β€” Default: not set. A comment string describing this holding disk πŸ“.
  • chunksize int β€” Default: 1 Gb. Holding disk chunk size. Dumps larger than the specified size get stored in multiple holding disk files, and the size of each chunk will not exceed the specified value. But here's the cute part β€” even though dump images are split in the holding disk, they're concatenated as they're written to tape, so each dump image still corresponds to a single continuous tape section ✨.

The default unit is Kbytes if it's not specified.

If 0 is specified, Amanda will create holding disk chunks as large as ((INT_MAX/1024)-64) Kbytes.

Each holding disk chunk includes a 32 Kbyte header, so the minimum chunk size is 64 Kbytes (but bestie, that would be really silly 😭).

Operating systems limited to a maximum file size of 2 Gbytes actually cannot handle files that large β€” they must be at least one byte less than 2 Gbytes. Since Amanda works with 32 Kbyte blocks, and to handle the final read at the end of the chunk, the chunk size should be at least 64 Kbytes (2 * 32 Kbytes) smaller than the maximum file size, e.g. 2047 Mbytes 🫢.

  • directory string β€” Default: "/dumps/amanda". The path to this holding area πŸ—‚οΈ.
  • use int β€” Default: 0 Gb. Amount of space that can be used in this holding disk area. If the value is zero, all available space on the file system is used. If the value is negative, Amanda will use all available space minus that value. Math but make it storage πŸ’€.
  • chunksize int β€” Default: 1 Gb. Holding disk chunk size. Dumps larger than the specified size will be stored in multiple holding disk files, and the size of each chunk won't exceed the specified value. Even though dump images are split in the holding disk, they're concatenated as they're written to tape, so each dump image still corresponds to a single continuous tape section ✨. (And yes, it's listed a second time in the page β€” not me, I'm just the messenger πŸ™ˆ.)

The default unit is Kbytes if it isn't specified.

If 0 is specified, Amanda will create holding disk chunks as large as ((INT_MAX/1024)-64) Kbytes.

Each holding disk chunk includes a 32 Kbyte header, so the minimum chunk size is 64 Kbytes (but that would be really silly).

Operating systems that are limited to a maximum file size of 2 Gbytes actually cannot handle files that large β€” they must be at least one byte less than 2 Gbytes. Since Amanda works with 32 Kbyte blocks, and to handle the final read at the end of the chunk, the chunk size should be at least 64 Kbytes (2 * 32 Kbytes) smaller than the maximum file size, e.g. 2047 Mbytes 🌸.


πŸ’Ύ DUMPTYPE SECTION πŸ’Ύ

The amanda.conf(5) file may define multiple sets of backup options and refer to them by name from the disklist(5) file. Like, one set of options for file systems that eat up high compression, another set for ones that don't compress well, another set for file systems that should always get a full backup, and so on. Different strokes for different DLEs, bestie πŸ‘‘.

A set of backup options goes in a dumptype section, which looks like this:

define dumptype "name" {
    dumptype-option dumptype-value
    ...
}

The { must appear at the end of a line, and the } on its own line. Same rule as always, no exceptions πŸ’….

Name is the name of this set of backup options, and it's referenced from the disklist(5) file.

Some of the options in a dumptype section are the exact same as those in the main part of amanda.conf(5). The main option value sets the default for all dumptype sections. So for instance, setting dumpcycle to 50 in the main part of the config file causes all following dumptype sections to start with that value β€” but it can be changed on a section-by-section basis. Important: changes to variables in the main part of the config file must be done before (earlier in the file than) any dumptypes are defined. Order matters, no cap ⭐.

The dumptype options and values are:

  • allow-split bool β€” Default: true. If true, then dumps with this dumptype can be split on the storage media. If false, then the dump will be written in a single file on the media. See "Dump Splitting Configuration" below πŸ¦‹.
  • application string β€” No default. Must be the name of an application if program is set to APPLICATION. See APPLICATION SECTION below πŸ’–.
  • auth string β€” Default: "bsdtcp". Type of authorization to perform between tape server and backup client hosts. amanda-auth(7) has the whole story πŸ”.
  • amandad-path string β€” Default: "$libexec/amandad". Specify the amandad path of the client β€” only use this with rsh/ssh authentification 🌟.
  • bumpdays int β€” Default: 2 days. To insure redundancy in the dumps, Amanda keeps filesystems at the same incremental level for at least bumpdays days, even if the other bump threshold criteria are met. Loyalty πŸ’–.
  • bumpmult float β€” Default: 1.5. The bump size multiplier. Amanda multiplies bumpsize by this factor for each level, which prevents active filesystems from bumping too much by making it harder to bump to the next level. Example time: with the default bumpsize and bumpmult set to 2.0, the bump threshold will be 10 Mbytes for level one, 20 Mbytes for level two, 40 Mbytes for level three, and so on. It escalates, honestly πŸ“ˆ.
  • bumppercent int β€” Default: 0. The minimum savings required to trigger an automatic bump from one incremental level to the next, expressed as a percentage of the current size of the DLE (size of current level 0). If Amanda determines that the next higher backup level will be this much smaller than the current level, she'll do the next level.

If this parameter is set to 0, the value of the parameter bumpsize is used to trigger bumping.

See also the options bumpsize, bumpmult and bumpdays 🫢.

  • bumpsize int β€” Default: 10 Mbytes. The minimum savings required to trigger an automatic bump from one incremental level to the next, expressed as size. If Amanda determines that the next higher backup level will be this much smaller than the current level, she'll do the next level. The value of this parameter is used only if the parameter bumppercent is set to 0.

The default unit is Kbytes if it's not specified.

See also the options bumppercent, bumpmult and bumpdays πŸ”₯.

  • client-port [ int | string ] β€” Default: "amanda". Specifies the port to connect to on the client. It can be a service name or a numeric port number 🌸.

client-custom-compress string

Default: none. This is the program that does the compression/decompression thing on the client side β€” it only kicks in when you're running compress client custom. Bestie, it must not contain any whitespace, and it absolutely must accept -d to uncompress. No exceptions, that's the vibe check it has to pass. πŸ’…

client-decrypt-option string

Default: -d. The option you pass to client-encrypt to flip it from encrypt mode into decrypt mode. Also must not contain whitespace. Keep it clean, keep it cute. ✨

client-encrypt string

Default: none. The program that handles encryption/decryption on the client, used together with encrypt client. Same rule as always: no whitespace allowed in there. πŸŽ€

client-username string

Default: CLIENT_LOGIN. Tells Amanda which username to use when connecting on the client. Heads up: only use this with rsh/ssh authentification. iykyk. πŸ¦‹

comment string

Default: not set. Just a lil comment string describing this whole set of backup options. Purely for you, bestie β€” a little note-to-self moment. πŸ’–

comprate float [, float ]

Default: 0.50, 0.50. These are the expected full and incremental compression factors for your dumps. Real talk: it's only used when Amanda has zero history info about compression rates for a filesystem, so normally you shouldn't even need to touch it. The one time it's lowkey useful? The first time you back up a very large filesystem that compresses basically nothing. Then it's worth setting. 🫢

compress [ none | client | server ] [ best | fast | custom ]

Default: client fast. Okay so if Amanda is doing the compression of your backup images, it can do it in two places: on the backup client host before the data ever crosses the network, or on the tape server host as it travels from the network into the holding disk or straight to tape. Which one you pick depends on a whole lil constellation of things β€” how well the dump image usually compresses, the speed and load on the client or server, network capacity, holding disk capacity, whether your tape hardware does compression, etc. ✨

For either type of compression, Amanda also lets you pick from three styles of compression:

  • best β€” the best compression available, often at the expense of CPU overhead.
  • fast β€” often not as good a compression as best, but usually less CPU overhead.
  • custom β€” use your very own compression method. (See dumptype custom-compress in example/amanda.conf for reference.)

So your compress options line can be any one of these, exactly:

compress none

compress client fast

compress client best

compress client custom
    Specify client-custom-compress "PROG"

    PROG must not contain white space and it must accept -d for
    uncompress.

compress server fast

compress server best

compress server custom
    Specify server-custom-compress "PROG"

    PROG must not contain white space and it must accept -d for
    uncompress.
Ngl, some tape devices do compression all on their own, and this option has nothing to do with whether that's used. If hardware compression is on (usually via a particular tape device name or mt option), then Amanda's software compression should be disabled. Don't double up, bestie. πŸ’€

dumpcycle int

Default: 10 days. The number of days in the backup cycle. Every disk using this set of options gets a full backup at least this often. Set it to zero and Amanda tries to do a full backup each and every run. πŸ‘‘

dump-limit [ server | same-host ]*

Default: server. This one says which host is allowed to initiate a backup of the dle. With server, the server can kick off a backup with the amdump command. With same-host, the client can initiate a backup with the amdump_client command. Choose your main character. 🌟

encrypt [ none | client | server ]

Default: not set. If you wanna encrypt your backup images, you can do it either on the backup client host before it crosses the network, or on the tape server host as it goes from the network into the holding disk or to tape. πŸ•΅οΈβ€β™€οΈ

So your encrypt options line can be one of:

encrypt none

encrypt client
    Specify client-encrypt "PROG"

    PROG must not contain white space.

    Specify client-decrypt-option "decryption-parameter" Default:
    "-d"

    decryption-parameter must not contain white space.

    (See dumptype client-encrypt-nocomp in example/amanda.conf for
    reference)

encrypt server
    Specify server-encrypt "PROG"

    PROG must not contain white space.

    Specify server-decrypt-option "decryption-parameter" Default:
    "-d"

    decryption-parameter must not contain white space.

    (See dumptype server-encrypt-fast in example/amanda.conf for
    reference)
Heads up: the current logic assumes compression then encryption during backup (which means decrypt then uncompress during restore). So specifying client-encryption AND server-compression is not supported. Sorry babes, that combo is a no. Also, amcrypt β€” which is a wrapper of aespipe β€” is provided as a reference symmetric encryption program. πŸ”

estimate [ client | calcsize | server ]+

Default: client. This sets the way Amanda estimates the size of each DLE before starting a backup. It's a list of acceptable estimate methods, and Amanda rolls with the first method the application actually supports. The methods:

  • client β€” use the same program as the dumping program. It's the most accurate way to do estimates, but ngl it can take a long time. 😭
  • calcsize β€” use a faster program to do estimates, but the result is less accurate.
  • server β€” use only statistics from the previous few runs to give an estimate. Super quick, but the result isn't accurate if your disk usage changes from day to day. If this method is specified but the server doesn't have enough data to make an estimate, then the option gets internally moved to the end of the list, so client or calcsize gets preferred instead. πŸ¦‹

exclude [ list | file ][[optional][append][ string ]+]

Default: file. Exclude is the opposite of include β€” it specifies the files that get left out of the backup. The format of the exclude expressions depends on the application, and some applications don't support excluding files at all. πŸ™ˆ

There are two exclude parameters: exclude file and exclude list. With exclude file, the string is an exclude expression. With exclude list, the string is a file name on the client that contains GNU-tar exclude expressions. The path to that specified exclude list file (if it's present β€” see the description of optional below) must be readable by the Amanda user.

All exclude expressions get concatenated into one file and passed to the application as an --exclude-from argument.

For GNU-tar, exclude expressions must always be specified as relative to the top-level directory of the DLE, and must start with ./. See the manpages for the individual applications for more info on supported exclude expressions. πŸ“

With the append keyword, the string gets appended to the current list. Without it, the string overwrites the list.

If optional is specified for exclude list, then amcheck won't complain if the file doesn't exist or isn't readable. ✨

For exclude list, if the file name is relative, the disk name being backed up gets prepended. So if you enter this:

exclude list ".amanda.excludes"

the actual file used would be /var/.amanda.excludes for a backup of /var, /usr/local/.amanda.excludes for a backup of /usr/local, and so on. So fetch. πŸ’…

fallback-splitsize int

Deprecated. See "Dump Splitting Configuration" below. 🫠

Default: 10M. This specifies the part size used when no split-diskbuffer is specified, or when it's too small or doesn't exist β€” and therefore it's the maximum amount of memory consumed for in-memory splitting. If you don't specify a unit, the default unit is Kbytes.

holdingdisk [ never | auto | required ]

Default: auto. Whether a holding disk should be used for these backups, or whether they should go straight to tape. ⚠️ Important caveat: if the holding disk is a portion of another file system that Amanda is backing up, that file system should refer to a dumptype with holdingdisk set to never β€” otherwise you're backing up the holding disk into itself, and that is a mess nobody needs.

  • never | no | false | off β€” never use a holdingdisk, the dump always goes directly to tape. There will be no dump if you have a tape error. 😬
  • auto | yes | true | on β€” use the holding disk, unless there's a problem with the holding disk, the dump won't fit there, or the medium doesn't require spooling (e.g., VFS device).
  • required β€” always dump to holdingdisk, never directly to tape. There will be no dump if it doesn't fit on the holdingdisk. Periodt.

ignore boolean

Default: no. Whether disks associated with this backup type should be backed up or not. This is lowkey iconic when the disklist file is shared among several configurations, and some of those configs shouldn't back up all the listed file systems. πŸŽ€

include [ list | file ][[optional][append][ string ]+]

Default: file ".". There are two include lists: include file and include list. With include file, the string is a glob expression. With include list, the string is a file name on the client that contains glob expressions. 🌸

All include expressions get expanded by Amanda, concatenated into one file, and passed to GNU-tar as a --files-from argument. They must start with ./ and contain no other /.

Include expressions must always be specified as relative to the head directory of the DLE.

Note For globbing to work at all β€” even the limited single-level kind β€” the top-level directory of the DLE must be readable by the Amanda user. That's the whole prerequisite, bestie. 🧚

With the append keyword, the string gets appended to the current list. Without it, the string overwrites the list.

If optional is specified for include list, then amcheck won't complain if the file doesn't exist or isn't readable. ✨

For include list, if the file name is relative, the disk name being backed up gets prepended.

index boolean

Default: no. Whether an index (catalogue) of the backup should be generated and saved in indexdir. These catalogues are what the amrecover utility uses. So if you want to be able to recover stuff, this is kinda your bestie. πŸ’–

kencrypt boolean

Default: no. Whether the backup image should be encrypted by Kerberos as it's sent across the network from the backup client host to the tape server host. πŸ”

maxdumps int

Default: 1. The maximum number of backups from a single host that Amanda will attempt to run in parallel. Also peep the main section parameter inparallel for related vibes. πŸ‘€

  • maxpromoteday int β€” Default: 10000. This is literally the max number of days a promotion can go on for, so set it to 0 if you don't want any promotion at all, or set it to 1 or 2 if your disks are getting overpromoted (yes, that's a thing, and it's giving needy πŸ’€).
  • max-warnings int β€” Default: 20. The max number of error lines that show up in the report for a dle. A value of 0 means unlimited (chaos mode, no cap, we love that for you). This is a whole vibe for shrinking your log file and your report β€” and if a dle has more errors than that, all of them get dumped into separate files anyway, so nothing's actually lost 🫢.
  • priority [ low | medium | high ] β€” Default: medium. When there's no tape to write to, Amanda does incremental backups to the holding disk in priority order. The priority can be high (2), medium (1), low (0), or honestly any number of your choice β€” main character move, pick your own ✨.
  • program [ "DUMP" | "GNUTAR" | "APPLICATION" ] β€” Default: "DUMP". The type of backup to perform. Valid values are:
    • "DUMP" β€” the native operating system backup program. Classic. Iconic. The OG.
    • "GNUTAR" β€” to use GNU-tar, or to do PC backups using Samba. Versatile queen πŸŽ€.
    • "APPLICATION" β€” to use an application, see the application option. Bring your own, iykyk.
  • property [append] [ hidden | visible ] string string+ β€” These options set various properties, and third party software can use them to store info right in the config file. Both strings are quoted; the first string holds the name of the property to set, and the rest hold its values. The append keyword appends the values to the list of values for that property.
    • With hidden (the default πŸ˜Άβ€πŸŒ«οΈ), the property is not put in the amanda dump header or in the log/debug files.
    • With visible, they are put in the amanda dump header and in the log/debug files.
    • Use hidden if the property has to be kept secret. fr fr, keep your secrets secret πŸ”’.
  • record boolean β€” Default: yes. Whether to ask the backup program to update its database of time stamps (e.g. /etc/dumpdates for DUMP, or /usr/local/var/amanda/gnutar-lists for GNUTAR). Normally this is enabled for daily backups and turned off for periodic archival runs. Know the difference, bestie πŸ’….
  • recovery-limit [ server | same-host | string ]* β€” Default: the global value. This parameter overrides the global recovery-limit parameter for DLEs of this dumptype. Local rules for local girls.
  • retry-dump int β€” Default: 2. How many times a backup gets tried in case of failure. Everybody gets a second chance (and a third) 🫢.
  • script string β€” No default. Must be the name of a script. You can have many scripts β€” yes, many, go off. See SCRIPT SECTION below.
  • server-custom-compress string β€” Default: none. The program to use to perform compression/decompression on the server; used with "compress server custom". Must not contain whitespace. Must accept -d to uncompress. Those are the rules, no negotiation πŸ’€.
  • server-decrypt-option string β€” Default: -d. The option that can be passed to server-encrypt to make it decrypt instead. Must not contain whitespace.
  • server-encrypt string β€” Default: none. The program to use to perform encryption/decryption on the server; used with "encrypt server". Must not contain whitespace. Secretive and mysterious, we stan πŸ•΅οΈβ€β™€οΈ.
  • skip-full boolean β€” Default: no. If true and planner has scheduled a full backup, these disks get skipped, and full backups should be run off-line on those days. It was reported that Amanda only schedules level 1 incrementals in this configuration β€” this is probably a bug πŸ›. Not us pretending that's a feature, ngl.
  • skip-incr boolean β€” Default: no. If true and planner has scheduled an incremental backup, these disks get skipped. Bye bestie πŸ‘‹.
  • split-diskbuffer string β€” Deprecated. See "Dump Splitting Configuration" below. Default: not set. When dumping a split dump in PORT-WRITE mode (usually meaning "no holding disk"), buffer the split chunks to a file in the directory specified by this option.
  • ssh-keys string β€” Default: not set. The key file the ssh auth will use β€” it must be the private key, obviously, don't be doing the most πŸ™ˆ. If this parameter isn't specified, the default ssh key gets used.
  • starttime int β€” Default: not set. Backup of these disks won't start until after this time of day. The value should be hh*100+mm, e.g. 6:30PM (18:30) would be entered as 1830. Very "no texts before 9am" energy ⏰.
  • strategy [ standard | nofull | noinc | skip | incronly ] β€” Default: standard. Strategy to use when planning what level of backup to run next. The values are:
    • standard β€” the standard Amanda schedule. The blueprint, the moment.
    • nofull β€” never do full backups, only level 1 incrementals.
    • noinc β€” never do incremental backups, only full dumps.
    • skip β€” treat this DLE as if it doesn't exist (useful to disable DLEs when sharing the disklist file between multiple configurations). Skipped DLEs will not be checked or dumped, and will not be matched by disklist expressions. Ghost mode πŸ‘».
    • incronly β€” only do incremental dumps. amadmin force should be used to tell Amanda that a full dump has been performed off-line, so that it resets to level 1.
  • tag [append] *string** β€” Default: no default. Specify the tags that match the dump-selection of a storage. Tag it, bestie 🏷️.
  • tape-splitsize int β€” Deprecated. See "Dump Splitting Configuration" below. Default: not set. Split dump file on tape into pieces of a specified size. The default unit is Kbytes if it is not specified.

The following dumptype entries are predefined by Amanda β€” free goodies, no cap 🎁:

define dumptype "no-compress" {
    compress none
}
define dumptype "compress-fast" {
    compress client fast
}
define dumptype "compress-best" {
    compress client best
}
define dumptype "srvcompress" {
    compress server fast
}
define dumptype "bsd-auth" {
    auth "bsd"
}
define dumptype "bsdtcp-auth" {
    auth "bsdtcp"
}
define dumptype "no-record" {
    record no
}
define dumptype "no-hold" {
    holdingdisk no
}
define dumptype "no-full" {
    skip-full yes
}

Okay so on top of the options in a dumptype section, you can also drop in one or more other dumptype names as identifiers, and that makes this dumptype inherit options from other previously defined dumptypes. It's giving generational wealth, but for config πŸ’–. For instance, two sections might be identical except for the record option:

define dumptype "normal" {
    comment "Normal backup, no compression, do indexing"
    no-compress
    index yes
    maxdumps 2
}
define dumptype "testing" {
    comment "Test backup, no compression, do indexing, no recording"
    "normal"
    record no
}

See how "testing" just pulls in "normal" and then overrides one thing? Effortless. Slay.

Also β€” Amanda provides a dumptype named global in the sample amanda.conf file that all dumptypes should reference. It's the perfect spot to make changes that affect every single dumptype. But heads up: you have to be careful that every dumptype explicitly inherits from the global dumptype β€” Amanda does not do that automatically. It's not gonna do the work for you, bestie, you have to opt in 😭.

✨ TAPETYPE SECTION ✨

Okay bestie, this is where you tell Amanda about your tapes β€” and you can define multiple types of tape media and devices, so go off. Each one lives in its own little tapetype section that looks like this:

define tapetype "name" {
    tapetype-option tapetype-value
    ...
}

The { must be at the end of a line, and the } gets its own line. That's the rule, don't fight it πŸ’…

name is the name of this type of tape medium/device. Amanda references it from the tapetype option in the main part of the config file.

Here's the menu of tapetype options and their values, bestie:

  • blocksize int β€” Default: 32 kbytes. How much data gets written in each tape record, in kbytes. This is similar to the BLOCK_SIZE device property, but heads up: if the blocksize isn't a multiple of 1024 bytes, then this parameter cannot be used to specify it, and the property must be used instead. 😀
  • comment string β€” Default: not set. A comment string describing this set of tape information.
  • filemark int β€” Default: 1 kbytes. How large a file mark (tape mark) is, measured in kbytes. If the size is only known in some linear measurement (e.g. inches), convert it to kbytes using the device density.
  • lbl-templ string β€” Default: not set. A PostScript template file that amreport uses to generate labels. Several sample files come with the Amanda sources in the example directory. Peep the amreport(8) man page for more info πŸŽ€
  • length int β€” Default: 2000 kbytes. How much data will fit on a tape, in kbytes.
Note that this value is only used by Amanda to schedule which backups will be run. Once the backups start, Amanda will continue to write to a tape until it gets an error, regardless of what value is entered for length (but see amanda-devices(7) for exceptions). So like, it's a vibe estimate, not a promise πŸ’€
  • part-cache-dir string β€” Default: none. The directory where part-cache files can be written when caching on disk. See "Dump Splitting Configuration" below.
  • part-cache-max-size int β€” Default: none. The maximum part size to use when caching is in effect. This limits the part size when disk or memory space for caching is constrained. This value must be greater than zero. No zero, bestie, we don't do that here.
  • part-cache-type [ none | disk | memory ] β€” Default: none. When part caching is required, this parameter specifies what type of caching gets used. The options are:
    • no caching (none) β€” in which case a failed part will cause the entire dump to fail 😭
    • on-disk caching (disk) β€” for which part-cache-dir must be set properly
    • in-memory caching (memory) β€” which on most systems severely restrains the size of the part that can be written

See "Dump Splitting Configuration" below.

  • part-size int β€” If this is set to zero (the default), then no splitting will take place, and the entire dump will fail if end-of-medium is encountered before the dump is complete β€” unless the device property LEOM is true, and the device can detect EOM. See "Dump Splitting Configuration" below.
  • readblocksize int β€” Default: 32 kytes. How much data will be read in each tape record. This can override a device's block size for reads only. Super useful, for example, when reading a tape written with a 256k block size while Amanda is configured to use 128k blocks. Heads up though: this unusual feature is not supported by all operating systems and tape devices. The default unit is Kbytes if it's not specified.
  • speed int β€” Default: 200 bps. How fast the drive will accept data, in bytes per second. Plot twist: this parameter is NOT currently used by Amanda. It's just vibing there πŸ™ˆ

And here's the cute part β€” in addition to options, you can supply another tapetype name as an identifier, which makes this tapetype inherit options from another tapetype. Inheritance slay πŸ’–

For instance, the only difference between a DLT4000 tape drive using Compact-III tapes and one using Compact-IV tapes is the length of the tape. So they could be entered as:

define tapetype "DLT4000-III" {
    comment "DLT4000 tape drives with Compact-III tapes"
    length 12500 mbytes         # 10 Gig tapes with some compression
    filemark 2000 kbytes
    speed 1536 kps
}
define tapetype "DLT4000-IV" {
    "DLT4000-III"
    comment "DLT4000 tape drives with Compact-IV tapes"
    length 25000 mbytes         # 20 Gig tapes with some compression
}

See how "DLT4000-III" just gets dropped in there and the IV version inherits everything? Iconic. 🌟


🌈 INTERFACE SECTION 🌈

The amanda.conf file may define multiple types of network interfaces, because of course it can. The info goes in an interface section, which looks like this:

define interface "name" {
    interface-option interface-value
    ...
}

The { must appear at the end of a line, and the } on its own line. Same deal as always 🫢

name is the name of this type of network interface. It's referenced from the disklist file.

If a src-ip is specified, then the connection should be from an interface with that IP. The system decides which interface to use if src-ip is not specified. You can add a route at the system level to do more specific routing.

Lowkey important: this section does not impose limits on the bandwidth that will actually be taken up by Amanda. Here's the actual tea: Amanda computes the estimated bandwidth each file system backup will take based on the estimated size and time, then compares that plus any other running backups with the limit as another of the criteria when deciding whether to start the backup. Once a backup starts, Amanda will use as much of the network as it can, leaving throttling up to the operating system and network hardware. So it's a scheduling vibe check, not a speed cap 😌

The interface options and values are:

  • comment string β€” Default: not set. A comment string describing this set of network information.
  • src-ip string β€” The IP address to use when sending a request to an amanda client.
  • use int β€” Default: 80000 Kbps. The speed of the interface in Kbytes per second.

In addition to options, another interface name may be supplied as an identifier, which makes this interface inherit options from another interface. At the moment, this is of little use. Ngl, it's giving placeholder energy πŸ™ˆ


πŸ¦‹ APPLICATION SECTION πŸ¦‹

The amanda.conf file may define multiple types of application. The info goes in an application section, looking like this:

define application "name" {
    application-option application-value
    ...
}

The { must appear at the end of a line, and the } on its own line.

name is the name of this type of application. It is referenced from the dumptype.

The application options and values are:

  • client-name string β€” No default. Specifies an application name that is in the amanda-client.conf on the client. The setting from that application will be merged with the current application. If client-name is set, then it is an error if that application is not defined on the client. 🚨

If client-name is not set, then the merge is done with the application that has the name equal to the plugin. E.g. if the plugin is 'amgtar', then the setting from the application 'amgtar' is used if it is defined. Sneaky auto-matching, love that for you.

  • comment string β€” Default: not set. A comment string describing this application.
  • plugin string β€” No default. Must be set to the name of the program. This program must be in the $libexecdir/amanda/application directory on the client. No plugin, no party.
  • property [append] [priority] string string+ β€” No default. You can set property for the application, and each application has a different set of property. Both strings are quoted; the first string contains the name of the property to set, and the others contain its values. The append keyword appends the values to the list of values for that property. The priority keyword disallows the setting of that property on the client. Periodt. πŸ’…

πŸ’… SCRIPT SECTION πŸ’…

Okay so amanda.conf can define multiple types of script, bestie. The info goes in a script section that looks like this:

define script "name" {
    script-option script-value
    ...
}

The { must appear at the end of a line, and the } on its own line. No cap.

name is the name of this type of script. It is referenced from the dumptype. Slay.

The script options and values are:

  • client-name string β€” No default. Specifies a script name that is in the amanda-client.conf on the client. The setting from that script will be merged with the current script. If client-name is set then it is an error if that script is not defined on the client.

If client-name is not set then the merge is done with the script that has the name equal to the plugin. e.g. if the plugin is 'amlog-script', then the setting from the script 'amlog-script' is used.

  • comment string β€” Default: not set. A comment string describing this script.
  • execute-on execute_on [,execute_on]* β€” No default. When the script must be executed, you can specify many of them:
    • pre-amcheck β€” Execute before the amcheck command for all dle. Can only be run on server.
    • pre-dle-amcheck β€” Execute before the amcheck command for the dle.
    • pre-host-amcheck β€” Execute before the amcheck command for all dle for the client.
    • post-amcheck β€” Execute after the amcheck command for all dle. Can only be run on server.
    • post-dle-amcheck β€” Execute after the amcheck command for the dle.
    • post-host-amcheck β€” Execute after the amcheck command for all dle for the client.
    • pre-estimate β€” Execute before the estimate command for all dle. Can only be run on server.
    • pre-dle-estimate β€” Execute before the estimate command for the dle.
    • pre-host-estimate β€” Execute before the estimate command for all dle for the client.
    • post-estimate β€” Execute after the estimate command for all dle. Can only be run on server.
    • post-dle-estimate β€” Execute after the estimate command for the dle.
    • post-host-estimate β€” Execute after the estimate command for all dle for the client.
    • pre-backup β€” Execute before the backup command for all dle. Can only be run on server.
    • pre-dle-backup β€” Execute before the backup command for the dle.
    • pre-host-backup β€” Execute before the backup command for all dle for the client. It can't be run on client, it must be run on server.
    • post-backup β€” Execute after the backup command for all dle. Can only be run on server.
    • post-dle-backup β€” Execute after the backup command for the dle.
    • post-host-backup β€” Execute after the backup command for all dle for the client. It can't be run on client, it must be run on server.
    • pre-recover β€” Execute before any level is recovered.
    • post-recover β€” Execute after all levels are recovered.
    • pre-level-recover β€” Execute before each level recovery.
    • post-level-recover β€” Execute after each level recovery.
    • inter-level-recover β€” Execute between two levels of recovery.

If you recover level 0 and 2 of the disk /usr with amrecover, it will execute:

script --pre-recover
script --pre-level-recover --level 0
#recovering level 0
script --post-level-recover --level 0
script --inter-level-recover --level 0 --level 2
script --pre-level-recover --level 2
#recovering level 2
script --post-level-recover --level 2
script --post-recover
  • execute-where [ client | server ] β€” Default: client. Where the script must be executed, on the client or server.
  • order int β€” Default: 5000. Scripts are executed in that order, it is useful if you have many scripts and they must be executed in a specific order.
  • plugin string β€” No default. Must be set to the name of the program. This program must be in the $libexecdir/amanda/application directory on the client and/or server.
  • property [append] [priority] string string+ β€” No default. You can set property for the script, each script has a different set of property. Both strings are quoted; the first string contains the name of the property to set, and the others contains its values. The append keyword appends the values to the list of values for that property. The priority keyword disallows the setting of that property on the client.
  • single-execution boolean β€” Default: no. The script is executed for each dle. If yes, the script is executed one time only.

πŸŽ€ DEVICE SECTION πŸŽ€

Backend storage devices are specified in amanda.conf in the form of "device" sections, which look like this:

define device name {
    comment "comment (optional)"
    tapedev "device-specifier"
    device-property "prop-name" "prop-value"
    ...
}

The { must appear at the end of a line, and the } on its own line. Periodt.

name is the user-specified name of this device. It is referenced from the global tapedev parameter. The device-specifier specifies the device name to use; see amanda-devices(7). As with most sections, the comment parameter is optional and only for the user's convenience.

An arbitrary number of device-property parameters can be specified. Again, see amanda-devices(7) for information on device properties. ✨


πŸ¦‹ CHANGER SECTION πŸ¦‹

Changers are described in amanda.conf in the form of "changer" sections, which look like this:

define changer name {
    comment "comment (optional)"
    tpchanger "changer-spec"
    changerdev "device-name"
    changerfile "state-file"
    ...
}

The { must appear at the end of a line, and the } on its own line.

name is the user-specified name of this device. The remaining parameters are specific to the changer type selected.

The tpchanger and changerfile can use '$t' to substitute the name of the changer.

See amanda-changers(7) for more information on configuring changers. πŸ’–


🌸 INTERACTIVITY SECTION 🌸

The amanda.conf file may define multiple interactivity methods, although only one will be used β€” that specified by the interactivity parameter. The information is entered in a interactivity section, which looks like this:

define interactivity name {
    interactivity-option interactivity-value
    ...
}

The { must appear at the end of a line, and the } on its own line.

name is the user-specified name of this interactivity. The remaining parameters are specific to the interactivity type selected.

The interactivity options and values are:

  • comment string β€” Default: not set. A comment string describing this interactivity.
  • plugin string β€” No default. Must be set to the name of the interactivity module, as described in amanda-interactivity(7).
  • property [append] string string+ β€” No default. You can set arbitrary properties for the interactivity. Each interactivity module has a different set of properties. The first string contains the name of the property to set, and the others contains its values. All strings should be quoted. The append keyword appends the given values to an existing list of values for that property.

See amanda-interactivity(7) for more information on configuring interactivity methods. 🫢


🌈 TAPERSCAN SECTION 🌈

The amanda.conf file may define multiple taperscan methods, it is set with the global taperscan parameter or in the storage section. The information is entered in a taperscan section, which looks like this:

define taperscan name {
    taperscan-option taperscan-value
    ...
}

The { must appear at the end of a line, and the } on its own line.

name is the user-specified name of this taperscan. The remaining parameters are specific to the taperscan type selected.

The taperscan options and values are:

  • comment string β€” Default: not set. A comment string describing this taperscan.
  • plugin string β€” No default. Must be set to the name of the taperscan module. See amanda-taperscan(7) for a list of defined taperscan modules.
  • property [append] string string+ β€” No default. Operates just like properties for interactivity methods, above.

See amanda-taperscan(7) for more information on configuring taperscan. ⭐


πŸ‘‘ POLICY SECTION πŸ‘‘

The amanda.conf file may define multiple policy, it is set with the policy parameter of the storage section. A policy name CONFIG_NAME is automatically created. The information is entered in a policy section, which looks like this:

define policy name {
    policy-option policy-value
    ...
}

The { must appear at the end of a line, and the } on its own line.

name is the user-specified name of this policy. The remaining parameters are specific to the policy type selected.

The policy options and values are:

  • comment string β€” Default: not set. A comment string describing this policy.
  • retention-days int β€” Default: 0. A volume is kept for that number of days before it can be reused.
  • retention-full int β€” Default: 0. A volume is kept if it contains a FULL not older than retention-full days.
  • retention-recover int β€” Default: 0. Keep all volumes needed to recover all files up to retention-recover days ago, if it was a level 2, also keep previous level 1 and level 0.
  • retention-tapes int β€” Default: global tapecycle-1. The latest used retention-tapes volume can't be reused. You must have more than retention-tapes volumes before a volume can be re-used.

πŸ“¦ STORAGE SECTION πŸ“¦

Okay bestie, so amanda.conf can define multiple storages β€” iconic, I know. The default storages get set with the storage parameter, and the vaulting storage gets set with the vault-storage parameter. If the global storage isn’t set, a storage named CONFIG_NAME is created. The info goes into a storage section that looks exactly like this:

define storage name {
    storage-option storage-value
    ...
}

The { must appear at the end of a line, and the } goes on its own line. No cap.

name is the user-specified name of this storage. The rest of the parameters are specific to the storage type you picked. Here’s the whole storage option menu, with every value and default preserved:

  • autoflush no|yes|all β€” Default: value of the global autoflush.
  • autolabel string [any] [other-config] [non-amanda] [volume-error] [empty] β€” Default: value of the global autolabel.
  • comment string β€” Default: not set. A comment string describing this storage.
  • device-output-buffer-size int β€” Default: value of the global device-output-buffer-size.
  • dump-selection [string | ALL] [ ALL | FULL | INCR ] β€” Default: no default. This tells Amanda which dumps get written to the storage. The first field is the tag: if it’s ALL, all DLEs match; if it’s a tag string, a DLE matches only if it has that tag. The second field is the level: ALL for all levels, FULL for level 0 only, or INCR for level > 0 only.
  • eject-volume bool β€” Default: value of the global eject-volume.
  • erase-on-failure bool β€” Default: NO. Automatically erase a volume if nothing useful was written to it. This is useful to reuse the volume sooner.
  • erase-on-full bool β€” Default: NO. Automatically erase a no-retention volume if the vtape area becomes full.
  • erase-volume bool β€” Default: NO. Automatically erase the volume when the policy expires. This is useful to free space on vtape or s3 devices, or to allow another storage to use that volume.
  • flush-threshold-dumped int β€” Default: value of the global flush-threshold-dumped.
  • flush-threshold-scheduled int β€” Default: value of the global flush-threshold-scheduled.
  • interactivity string β€” Default: value of the global interactivity.
  • labelstr string β€” Default: value of the global labelstr.
  • max-dle-by-volume int β€” Default: value of the global max-dle-by-volume.
  • meta-autolabel string β€” Default: value of the global meta-autolabel.
  • policy string β€” Default: CONFIG_NAME. Define the policy to use.
  • report-next-media boolean β€” Default: value of the global report-next-media.
  • report-use-media boolean β€” Default: value of the global report-use-media.
  • runtapes int β€” Default: value of the global runtapes.
  • set-no-reuse bool β€” Default: no. If set to yes, a volume is marked as no-reuse after it is written.
  • tapedev string β€” Default: value of the global tapedev. This parameter can either specify a device (explicitly or by referencing a device definition β€” see amanda-devices(7)) or a tape changer (explicitly or by referencing a device definition β€” see amanda-changers(7)).
  • tapepool string β€” Default: CONFIG_NAME. Some characters are substituted:
    • $o : org configuration
    • $c : config name
    • $r : storage name
  • taperalgo [ first | firstfit | largest | largestfit | smallest | last ] β€” Default: value of the global taperalgo.
  • taperflush int β€” Default: value of the global taperflush.
  • taperscan string β€” Default: value of the global taperscan.
  • taper-parallel-write int β€” Default: value of the global taper-parallel-write.
  • tapetype string β€” Default: value of the global tapetype.
  • tpchanger string β€” Default: value of the global tpchanger.
  • vault storage int β€” Will vault all dumps from this storage to the new storage X days after the dumps. You can have multiple vault entries.

βœ‚οΈ DUMP SPLITTING CONFIGURATION βœ‚οΈ

Amanda can β€œsplit” dumps into parts while writing them to storage media. This is genuinely such a slay because it lets Amanda recover gracefully from a failure while writing a part to a volume β€” it just selects a new volume and re-writes the dump from the beginning of the failed part. Parts also allow Amanda to seek directly to the required data, although that functionality is not yet used. Lowkey future-proofing.

To support re-writing from the beginning of a failed part, Amanda must have access to the contents of the part after it has been partially written. If the dump is being read from holding disk, then the part contents are available there. Otherwise, the part must be cached, and this can be done in memory or on disk. In either of those latter cases, the cache must have enough space to hold an entire part.

Because it is common for a single Amanda configuration to use both holding-disk (FILE-WRITE) and direct (known as PORT-WRITE) dumps, Amanda allows the configuration of different split sizes for the two cases. This allows, for example, a part size appropriate to large tapes when performing FILE-WRITE dumps, with a part size limited by available disk or memory when performing PORT-WRITE dumps.

Selecting a proper split size is a delicate matter, bestie. If the parts are too large, substantial storage space may be wasted in failed parts. If they’re too small, large dumps will be split into innumerable tiny dumpfiles, adding to restoration complexity; furthermore, an excess of filemarks will cause slower tape drive operation and reduce the usable space on tape. A good rule of thumb is 1/10 of the size of a volume of storage media.

In versions of Amanda through 3.1.*, splitting was controlled by the dumptype parameters tape-splitsize, split-diskbuffer, and fallback-splitsize. These keywords had confusing and non-intuitive interactions, and have since been deprecated.

If the deprecated keywords are not present, subsequent versions of Amanda use the dumptype parameter allow-split to control whether a DLE can be split, and the tapetype parameters part-size, part-cache-type, part-cache-dir, and part-cache-max-size. The part-size specifies the β€œnormal” part size, while the part-cache-* parameters describe how to behave when caching is required (on PORT-WRITE). Full details on these parameters are given above.


πŸ‘€ SEE ALSO πŸ‘€

The Amanda Wiki: : http://wiki.zmanda.com/


πŸ’– AUTHORS πŸ’–

  • James da Silva <jds@amanda.org>
  • Stefan G. Weichinger <sgw@amanda.org>

And that’s the entire manual page, bestie β€” from Amanda 3.5.4, dated 07/23/2025, page AMANDA.CONF(5). You ate that. Periodt. πŸ’…βœ¨

πŸ“¦ where this page comes from
  • fedora 43: amanda 3.5.4-17.fc43 Β· BSD-3-Clause AND GPL-3.0-or-later AND GPL-2.0-or-later AND GPL-2.0-only
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms