How to configure Amanda backup on Linux
How to Configure Amanda Backup on Linux
Amanda (Advanced Maryland Automatic Network Disk Archiver) is a powerful, enterprise-grade backup solution that provides network-based backup capabilities for Linux and Unix systems. This comprehensive guide will walk you through the complete process of configuring Amanda backup on Linux, from initial installation to advanced configuration scenarios.
Table of Contents
1. [Introduction to Amanda Backup](#introduction-to-amanda-backup)
2. [Prerequisites and Requirements](#prerequisites-and-requirements)
3. [Installation Process](#installation-process)
4. [Basic Configuration Setup](#basic-configuration-setup)
5. [Advanced Configuration Options](#advanced-configuration-options)
6. [Client Configuration](#client-configuration)
7. [Testing Your Configuration](#testing-your-configuration)
8. [Troubleshooting Common Issues](#troubleshooting-common-issues)
9. [Best Practices and Security](#best-practices-and-security)
10. [Monitoring and Maintenance](#monitoring-and-maintenance)
Introduction to Amanda Backup
Amanda is a sophisticated backup system that uses a client-server architecture to manage backups across multiple machines in a network environment. It supports various backup media including tapes, disk-based storage, and cloud storage solutions. Amanda's intelligent scheduling system automatically determines when to perform full or incremental backups, optimizing storage usage and backup windows.
Key features of Amanda include:
- Network-based backup architecture supporting multiple clients
- Intelligent backup scheduling with automatic full/incremental decisions
- Multiple storage backend support including tapes, disks, and cloud storage
- Compression and encryption capabilities for secure data protection
- Detailed reporting and logging for backup monitoring
- Cross-platform compatibility supporting various Unix-like systems
Prerequisites and Requirements
Before beginning the Amanda configuration process, ensure your system meets the following requirements:
System Requirements
- Operating System: Linux distribution (Ubuntu, CentOS, RHEL, SUSE, Debian)
- Architecture: x86_64 or compatible architecture
- Memory: Minimum 512MB RAM (2GB recommended for production)
- Disk Space: Sufficient space for backup storage plus temporary files
- Network: Reliable network connectivity between server and clients
Software Dependencies
Amanda requires several system components and libraries:
```bash
For Ubuntu/Debian systems
sudo apt-get update
sudo apt-get install build-essential xinetd tar gzip bzip2 mt-st
For CentOS/RHEL systems
sudo yum install gcc gcc-c++ xinetd tar gzip bzip2 mt-st
or for newer versions
sudo dnf install gcc gcc-c++ xinetd tar gzip bzip2 mt-st
```
User Account Setup
Amanda requires dedicated system users for security and proper operation:
```bash
Create amanda user and group
sudo groupadd amanda
sudo useradd -g amanda -d /var/lib/amanda -s /bin/bash amanda
sudo mkdir -p /var/lib/amanda
sudo chown amanda:amanda /var/lib/amanda
```
Network Configuration
Ensure the following network ports are available:
- Port 10080: Amanda index server
- Port 10082: Amanda tape server
- Port 10083: Amanda data transfer
Installation Process
Installing from Distribution Packages
Most Linux distributions provide Amanda packages in their repositories:
Ubuntu/Debian Installation
```bash
Update package repository
sudo apt-get update
Install Amanda server components
sudo apt-get install amanda-server amanda-client
Install additional utilities
sudo apt-get install amanda-common amanda-server amanda-client mtx
```
CentOS/RHEL Installation
```bash
Enable EPEL repository if not already enabled
sudo yum install epel-release
Install Amanda packages
sudo yum install amanda amanda-client amanda-server
For newer systems using dnf
sudo dnf install amanda amanda-client amanda-server
```
Compiling from Source
For the latest features or custom configurations, compile Amanda from source:
```bash
Download Amanda source code
wget http://www.amanda.org/download/amanda-3.5.1.tar.gz
tar -xzf amanda-3.5.1.tar.gz
cd amanda-3.5.1
Configure build options
./configure \
--prefix=/opt/amanda \
--with-user=amanda \
--with-group=amanda \
--with-owner=amanda \
--with-fqdn \
--with-bsd-security \
--with-amandahosts \
--with-smbclient=/usr/bin/smbclient
Compile and install
make
sudo make install
```
Post-Installation Setup
After installation, configure system paths and permissions:
```bash
Add Amanda binaries to system PATH
echo 'export PATH=$PATH:/opt/amanda/bin:/opt/amanda/sbin' >> ~/.bashrc
source ~/.bashrc
Set proper permissions
sudo chown -R amanda:amanda /opt/amanda
sudo chmod -R 755 /opt/amanda/bin
sudo chmod -R 755 /opt/amanda/sbin
```
Basic Configuration Setup
Creating the Configuration Directory
Amanda configurations are stored in dedicated directories:
```bash
Create configuration directory
sudo mkdir -p /etc/amanda/DailySet1
sudo chown amanda:amanda /etc/amanda/DailySet1
Create necessary subdirectories
sudo mkdir -p /var/lib/amanda/DailySet1/{index,tapelist}
sudo chown -R amanda:amanda /var/lib/amanda/DailySet1
```
Amanda Configuration File (amanda.conf)
Create the main configuration file `/etc/amanda/DailySet1/amanda.conf`:
```bash
Amanda Configuration File - DailySet1
org "YourOrganization"
mailto "admin@yourdomain.com"
dumpuser "amanda"
Index and info file locations
infofile "/var/lib/amanda/DailySet1/curinfo"
logdir "/var/lib/amanda/DailySet1"
indexdir "/var/lib/amanda/DailySet1/index"
Tape configuration
tapelist "/var/lib/amanda/DailySet1/tapelist"
tapedev "/dev/nst0" # Adjust for your tape device
tapetype HP-DAT
labelstr "^DailySet1-[0-9][0-9]*$"
Backup scheduling
dumpcycle 7 days
runspercycle 5
tapecycle 10 tapes
Storage and compression settings
bumpsize 20 MB
bumpdays 2
bumpmult 4
Network and performance settings
netusage 800 Kbps
maxdumps 2
holdingdisk hd1 {
comment "Main holding disk"
directory "/var/lib/amanda/holdings"
use 1000 MB
chunksize 1GB
}
Define dump types
define dumptype global {
comment "Global definitions"
auth "bsd"
compress none
index yes
maxdumps 2
}
define dumptype always-full {
global
comment "Full backup always"
compress client fast
priority high
dumpcycle 0
}
define dumptype comp-user-tar {
global
comment "Compressed user directories"
compress client fast
priority medium
program "GNUTAR"
}
define dumptype comp-root-tar {
global
comment "Root partitions with compression"
compress client fast
priority high
program "GNUTAR"
exclude list optional "/etc/amanda/exclude.gtar"
}
Define tape type (adjust for your hardware)
define tapetype HP-DAT {
comment "HP DAT drive"
length 1900 mbytes
filemark 111 kbytes
speed 468 kps
}
```
Disk List Configuration (disklist)
Create the disk list file `/etc/amanda/DailySet1/disklist`:
```bash
Amanda Disk List Configuration
Format: hostname diskname dumptype [spindle [interface]]
Local server backups
localhost /home comp-user-tar
localhost /etc comp-root-tar
localhost /var comp-root-tar
localhost /usr/local comp-user-tar
Remote client backups
client1.example.com /home comp-user-tar
client1.example.com /etc comp-root-tar
client2.example.com /var/www comp-user-tar
client2.example.com /etc always-full
```
Creating Exclude Lists
Create exclude files to skip unnecessary files:
```bash
Create exclude file for GNUTAR
sudo tee /etc/amanda/exclude.gtar << EOF
/tmp
/var/tmp
/proc
/sys
/dev
/mnt
/media
*.tmp
*.cache
core
*~
.DS_Store
EOF
sudo chown amanda:amanda /etc/amanda/exclude.gtar
```
Advanced Configuration Options
Encryption Configuration
Enable encryption for sensitive data:
```bash
Add to amanda.conf
define dumptype encrypted-tar {
comp-user-tar
comment "Encrypted compressed backup"
encrypt client
client_encrypt "/usr/bin/gpg"
encrypt_suffix ".gpg"
}
```
Multiple Storage Destinations
Configure multiple storage backends:
```bash
Disk-based storage configuration
define changer disk-changer {
tapedev "file:/backup/amanda/vtapes/slot-{1,2,3,4,5}"
property "num-slot" "5"
changerfile "/var/lib/amanda/DailySet1/changer"
}
Update amanda.conf
tapedev "disk-changer"
tapetype DISK
autolabel "DailySet1-%%%" empty volume-error
```
Network Throttling and Optimization
Configure network usage limits:
```bash
Add to amanda.conf for bandwidth management
interface local {
comment "Local network interface"
use 1000 kbps
}
interface wan {
comment "WAN connection"
use 256 kbps
}
Apply to specific hosts in disklist
remote-server.example.com /home comp-user-tar 0 wan
```
Client Configuration
Installing Amanda Client
On each client machine:
```bash
Ubuntu/Debian
sudo apt-get install amanda-client
CentOS/RHEL
sudo yum install amanda-client
```
Client Authentication Setup
Configure authentication between server and clients:
```bash
Create .amandahosts file on client
sudo tee /var/lib/amanda/.amandahosts << EOF
amanda-server.example.com amanda amdump
amanda-server.example.com root amindexd amidxtaped
EOF
sudo chown amanda:amanda /var/lib/amanda/.amandahosts
sudo chmod 600 /var/lib/amanda/.amandahosts
```
xinetd Configuration
Configure xinetd services on clients:
```bash
Create Amanda service files
sudo tee /etc/xinetd.d/amanda << EOF
service amanda
{
socket_type = dgram
protocol = udp
wait = yes
user = amanda
group = amanda
server = /usr/lib/amanda/amandad
disable = no
}
EOF
Restart xinetd
sudo systemctl restart xinetd
sudo systemctl enable xinetd
```
Firewall Configuration
Open necessary ports on clients:
```bash
Using firewalld (CentOS/RHEL)
sudo firewall-cmd --permanent --add-port=10080/tcp
sudo firewall-cmd --permanent --add-port=10082/tcp
sudo firewall-cmd --permanent --add-port=10083/tcp
sudo firewall-cmd --reload
Using ufw (Ubuntu)
sudo ufw allow 10080/tcp
sudo ufw allow 10082/tcp
sudo ufw allow 10083/tcp
```
Testing Your Configuration
Configuration Validation
Test your Amanda configuration:
```bash
Check configuration syntax
sudo -u amanda amcheck DailySet1
Test client connectivity
sudo -u amanda amcheck -c DailySet1
Verify tape/storage device
sudo -u amanda amcheck -s DailySet1
```
Running Test Backups
Perform initial backup tests:
```bash
Run a test backup
sudo -u amanda amdump DailySet1
Check backup status
sudo -u amanda amstatus DailySet1
Generate backup report
sudo -u amanda amreport DailySet1
```
Backup Verification
Verify backup integrity:
```bash
List available backups
sudo -u amanda amadmin DailySet1 find localhost
Test restore capability
sudo -u amanda amrecover DailySet1
```
Troubleshooting Common Issues
Connection Problems
Issue: Clients cannot connect to Amanda server
Solution:
```bash
Check network connectivity
telnet client-hostname 10080
Verify xinetd configuration
sudo systemctl status xinetd
sudo netstat -tulpn | grep :10080
Check authentication files
ls -la /var/lib/amanda/.amandahosts
```
Permission Issues
Issue: Permission denied errors during backup
Solution:
```bash
Fix Amanda user permissions
sudo chown -R amanda:amanda /var/lib/amanda
sudo chown -R amanda:amanda /etc/amanda
Check sudo configuration for Amanda
sudo visudo
Add: amanda ALL=(root) NOPASSWD: /usr/bin/tar, /bin/gzip
```
Storage Device Problems
Issue: Cannot access tape device or storage
Solution:
```bash
Check device permissions
ls -la /dev/nst0
sudo chown amanda:amanda /dev/nst0
Test device access
sudo -u amanda mt -f /dev/nst0 status
For disk-based storage
sudo mkdir -p /backup/amanda/vtapes
sudo chown -R amanda:amanda /backup/amanda
```
Memory and Performance Issues
Issue: Backups running slowly or failing due to resource constraints
Solution:
```bash
Adjust holding disk size in amanda.conf
holdingdisk hd1 {
directory "/var/lib/amanda/holdings"
use 2000 MB # Increase size
chunksize 512MB # Adjust chunk size
}
Limit concurrent dumps
maxdumps 1 # Reduce from default
```
Best Practices and Security
Security Hardening
Implement security best practices:
```bash
Use SSH authentication instead of BSD
define dumptype secure-tar {
comp-user-tar
auth "ssh"
ssh_keys "/var/lib/amanda/.ssh/id_rsa"
}
Enable encryption for sensitive data
encrypt client
client_encrypt "/usr/bin/gpg --cipher-algo AES256"
```
Backup Strategy Optimization
Optimize backup schedules and retention:
```bash
Implement differential backup strategy
define dumptype incremental-tar {
global
compress client fast
priority medium
program "GNUTAR"
strategy incronly
}
Configure retention policies
dumpcycle 14 days # Full backup every 2 weeks
tapecycle 20 tapes # Keep 20 tapes in rotation
```
Monitoring and Alerting
Set up monitoring for backup operations:
```bash
Create monitoring script
sudo tee /usr/local/bin/amanda-monitor.sh << 'EOF'
#!/bin/bash
LOGFILE="/var/lib/amanda/DailySet1/amdump"
if grep -q "FAILED" "$LOGFILE.1"; then
echo "Amanda backup failures detected" | mail -s "Backup Alert" admin@example.com
fi
EOF
sudo chmod +x /usr/local/bin/amanda-monitor.sh
Add to crontab
echo "0 8 * /usr/local/bin/amanda-monitor.sh" | sudo crontab -u amanda -
```
Regular Maintenance Tasks
Implement routine maintenance:
```bash
Weekly tape/storage verification
0 2 0 /usr/sbin/amverify DailySet1
Monthly configuration check
0 3 1 /usr/sbin/amcheck DailySet1
Quarterly full system test
Manual process - document restore procedures
```
Monitoring and Maintenance
Log Analysis
Regular log monitoring is essential:
```bash
View recent backup logs
sudo -u amanda tail -f /var/lib/amanda/DailySet1/log
Analyze backup reports
sudo -u amanda amreport DailySet1 --from-amdump
Check for errors
grep ERROR /var/lib/amanda/DailySet1/amdump*
```
Performance Monitoring
Monitor backup performance:
```bash
Check backup duration trends
sudo -u amanda amadmin DailySet1 info | grep "stats"
Monitor network utilization
iftop -i eth0 during backup windows
Disk space monitoring
df -h /var/lib/amanda/holdings
```
Database Maintenance
Maintain Amanda's internal database:
```bash
Clean old index files
sudo -u amanda find /var/lib/amanda/DailySet1/index -type f -mtime +60 -delete
Optimize info database
sudo -u amanda amadmin DailySet1 export > /tmp/amanda-export
sudo -u amanda amadmin DailySet1 import < /tmp/amanda-export
```
Conclusion
Configuring Amanda backup on Linux requires careful planning and attention to detail, but provides a robust, scalable backup solution for enterprise environments. This comprehensive guide has covered the essential aspects of Amanda configuration, from basic setup to advanced features and troubleshooting.
Key takeaways for successful Amanda implementation:
1. Plan your backup strategy carefully, considering retention requirements and available storage
2. Test configurations thoroughly before deploying to production environments
3. Implement proper security measures including authentication and encryption
4. Monitor backup operations regularly and maintain detailed logs
5. Document your configuration and maintain recovery procedures
6. Perform regular restore tests to verify backup integrity
By following these guidelines and best practices, you'll have a reliable backup system that can protect your critical data and support your organization's business continuity requirements. Remember to regularly review and update your backup configuration as your infrastructure evolves and grows.
For ongoing success with Amanda backup, stay informed about updates and security patches, participate in the Amanda community forums, and continuously refine your backup strategies based on changing business needs and technological advances.