jackyzm

导航

CentOS7安装配置Amanda

参考:

https://wenku.baidu.com/view/881e0c998e9951e79a892759.html

yum  -y  install  amanda*

http://blog.51cto.com/13525470/2060765

yum  -y  install  xinetd*   

https://linux.die.net/man/7/amanda-auth

http://blog.51cto.com/8721349/1601006

http://blog.secaserver.com/2013/02/centos-restore-recover-amanda-backup/

http://blog.51cto.com/8721349/1601006

 

一、前言

Amanda简介

 

Amanda (Advanced Maryland Automatic Network Disk Archiver,马里兰高级自动网络磁盘存档工具) 是由马里兰大学的James da Silva在1991年所开发的。它是一个复杂的网络备份系统,能够把LAN中的所有计算机备份到一台服务器的磁带驱动器、磁盘或光盘上。

Amanda本身并不是备份程序,它其实只是管理其他备份软件的封装软件。它使用系统上的dump和restore命令作为底层的备份软件,同时也能够使用tar命令,针对于windows计算机,Amanda还能够使用smbtar命令来实现备份。

Amanda支持类型广泛的磁带驱动器,并且能够使用磁带驱动器中的硬件压缩功能,或者也可以在数据通过网络之前使用客户机的compress以及gzip命令来压缩备份。其次,Amanda能够使用临时保存磁盘作为备份存档的中间存储媒介,以优化磁带的写入性能并保证在磁带出错时也能备份数据。

Amanda是当前最流行的免费备份解决方案,目前Amanda最新的稳定版本是2.5.2p2。通过 http://www.amanda.org站点可以免费获得。

 

Amanda工作方式

 

Amanda 综合使用完全备份和增量备份来保存所负责的全部数据,使用最小的、有可能是每日的备份集。一台 Amanda 服务器可以备份任意数量执行 Amanda 的客户机或是将连上 Amanda 服务器的计算机上的数据备份到一台磁带机上。一个常见的问题是,数据写入磁带机的时间将超过取行数据的时间,而 Amanda 解决了这个问题。它使用一个 “holding disk” 来同时备份几个文件系统。 Amanda 建立 “archive sets” 的一组磁带,用来备份在 Amanda 的配置文件中所列出的完整的文件系统。

Amanda 的整体策略是:在每次周期中完成一次数据的完全备份,并且确保在两次完全转储之间备份所有更改的数据。传统的做法是先执行完全备份,然后在此期间执行增量备份。而Amanda 的工作方式不同的是,每次运行Amanda 都对部分数据进行完全备份,确切地说,就是在一个完整的备份周期内备份全部数据所需备份的其中一部分。例如,如果周期为 7 天,且一个周期内进行7次备份,则每天必须备份 1/7 的数据,以便在 7 天之内完成一次完全备份。除了这个“部分”完全备份外,Amanda 还对自最近一次完全备份后更改的数据进行增量备份。Amanda这种特有的备份策略,可以减少每次备份的数据量。

 

二、Amanda的安装部署

 

服务器端:

 

安装

1.安装amanda,修改配置文件

yum install -y amanda*

2.创建配置文件

mkdir /etc/amanda/ServerNetBackup
vim /etc/amanda/ServerNetBackup/amanda.conf

配置文件如下:

org "ServerNetBackup"                 # Organization name for reports
mailto "address@youremail.com"        # Email address to receive reports
netusage 10000 Kbps                   # Bandwidth limit, 10M
 
dumpcycle 1 week                      # Backup cycle is 7 days
runspercycle 7                        # Run 7 times every 7 days
tapecycle 8 tapes                    # Dump to 8 different tapes during the cycle
tpchanger "chg-disk"                  # The tape-changer glue script
 
changerfile "/etc/amanda/ServerNetBackup/changer"     # The tape-changer file
 
tapedev "file://central_backup/ServerNetBackup/slots" # The no-rewind tape device to be used
tapetype HARDDISK                                     # Define the type of tape
 
infofile "/etc/amanda/ServerNetBackup/curinfo"        # Database directory
logdir "/etc/amanda/ServerNetBackup/logs"             # Log directory
indexdir "/etc/amanda/ServerNetBackup/index"          # Index directory
 
define tapetype HARDDISK {                            # Define our tape behaviour
length 1000 mbytes                                  # Every tape is 1GB in size
}
 
amrecover_changer "changer"                           # Changer for amrecover
 
define dumptype global {                              # The global dump definition
maxdumps 2                                            # The maximum number of backups run in parallel
estimate calcsize                                     # Estimate the backup size before dump
holdingdisk yes                                       # Dump to temp disk (holdingdisk) before backup to tape
index yes                                             # Generate index. For restoration usage
}
 
define dumptype root-tar {                            # How to dump root's directory
global                                                # Include global (as above)
program "GNUTAR"                                      # Program name for compress
comment "root partitions dumped with tar"
compress none                                         # No compress
index                                                 # Index this dump
priority low                                          # Priority level
}
 
define dumptype user-tar {                            # How to dump user's directory
root-tar                                              # Include root-tar (as above)
comment "user partitions dumped with tar"
priority medium                                       # Priority level
}
 
define dumptype comp-user-tar {                       # How to dump & compress user's directory
user-tar                                              # Include user-tar (as above)
compress client fast                                  # Compress in client side with less CPU (fast)
}

 

创建备份的位置

1.创建虚拟磁带目录

mkdir -p /central_backup/ServerNetBackup/slots

2.修改目录的权限

chown amandabackup.disk /central_backup -Rf
chown amandabackup.disk /etc/amanda/ServerNetBackup -Rf

3.切换amandabackup用户,创建虚拟磁带,存放备份文件

for n in `seq 1 8`; do mkdir /central_backup/ServerNetBackup/slots/slot${n}; done

4.为每个磁带做一个标签

for n in `seq 1 8` ; do amlabel ServerNetBackup ServerNetBackup-${n} slot ${n}; done

5.创建配置文件里定义好的目录

mkdir /etc/amanda/ServerNetBackup/{curinfo,logs,index}

配置需要备份的机器(客户端)和备份目录

1.切换amandabackup用户,创建disklist文件,这个文件存放的是客户端和对应的备份目录

su - amandabackup
vim /etc/amanda/ServerNetBackup/disklist

增加以下几行

client1 /home/data   comp-user-tar
client2.org  /data2  root-tar

2.修改/etc/hosts,确保服务端与客户端之间是互通的

192.168.15.34 client1
192.168.15.224 client2.org

3.切换root用户,修改xinetd.d的amanda服务

vim /etc/xinetd.d/amanda

配置文件如下:

# default: off
# description: The client for the Amanda backup system.\
# This must be on for systems being backed up\
# by Amanda.
service amanda
{
        socket_type = dgram
        protocol = udp
        wait = yes
        user = amandabackup
        group = disk
        server = /usr/sbin/amandad
# Configure server_args for the authentication type you will be using,
# and the services you wish to allow the amanda server and/or recovery
# clients to use.
#
# Change the -auth= entry to reflect the authentication type you use.
# Add amindexd to allow recovery clients to access the index database.
# Add amidxtaped to allow recovery clients to access the tape device.
        server_args = -auth=bsd amdump 
        disable = no
}

4.开机启动xinetd

chkconfig xinetd on
service xinetd restart

5.查看amanda服务是否已经开启

netstat -a | grep amanda

 

客户端

 

1.安装amanda

yum install -y amanda amanda-client

2.切换到amandabackup用户,修改 /var/lib/amanda/.amandahosts,添加服务器端的域名

su - amandabackup
vim /var/lib/amanda/.amandahosts

3.修改xinetd.d监控的amanda服务,如上

4.开机启动xinetd.d,如上

5.在/etc/hosts文件中添加服务器端的域名解析

192.168.15.214 office.servering.com
192.168.15.224 client2.org

6.修改备份目录的权限

chmod 755 /home/data

 

三、测试amanda备份

1.在服务器端,切换amandabackup用户,测试配置是否正确

su - amandabackup
amcheck ServerNetBackup

2.如无错误,开始备份客户端的目录

amdump ServerNetBackup

3.可以添加按时备份的计划任务

0 5 * * 6 /usr/sbin/amdump ServerNetBackup

 

四、Amanda还原备份测试

 

amanda服务器端

1.修改/var/lib/amanda/.amandahosts文件,授权客户端可以进行的操作

client2.org root amindexd amidxtaped
client1 root amindexd amidxtaped
office.servering.com root amindexd amidxtaped
office.servering.com amandabackup amdump

2.修改/etc/xinetd.d/amanda

# default: off
# description: The client for the Amanda backup system.\
# This must be on for systems being backed up\
# by Amanda.
service amanda
{
        socket_type = dgram
        protocol = udp
        wait = yes
        user = amandabackup
        group = disk
        server = /usr/sbin/amandad
# Configure server_args for the authentication type you will be using,
# and the services you wish to allow the amanda server and/or recovery
# clients to use.
#
# Change the -auth= entry to reflect the authentication type you use.
# Add amindexd to allow recovery clients to access the index database.
# Add amidxtaped to allow recovery clients to access the tape device.
        server_args = -auth=bsd amdump amindexd amidxtaped
        disable = no
}

 

amanda客户端

1.修改/etc/amanda/amanda-client.conf或者自定义一个文件夹/etc/amanda/ServerNetBackup/amanda-client.conf

#
# amanda.conf - sample Amanda client configuration file.
#
# This file normally goes in /etc/amanda/amanda-client.conf.
#
conf "ServerNetBackup" # your config name
index_server "office.servering.com" # your amindexd server
tape_server "office.servering.com" # your amidxtaped server
tapedev "chg-disk"  #需要自己添加
#tapedev "tape:/dev/YOUR-TAPE-DEVICE-HERE" # your tape device
                        # if not set, Use configure or ask server.
                        # if set to empty string "", ask server
                        # amrecover will use the changer if set to the value
                        # of 'amrecover_changer' in the server amanda.conf.
# auth - authentication scheme to use between server and client.
# Valid values are "bsd", "bsdudp", "bsdtcp", "krb5", "local",
# "rsh" and "ssh".
# Default: [auth "bsdtcp"]
auth "bsd"  
#auth方式务必和server端的一致,不然会连接不上
ssh_keys "" # your ssh keys file if you use ssh auth
#resolves "resource temporarily unavailable" bug
unreserved-tcp-port 1025,65535

 

在客户端的还原过程

 

在客户端1上还原数据

 

1.进入将要restore备份的目录

cd /data/backup/tmp

2.连接amanda服务器

amrecover ServerNetBackup -s office.servering.com

3.列出已经备份的目录

amrecover> listdisk
200- List of disk for host client1
201- /home/data
200 List of disk for host client1
amrecover>

4.选择将要还原的备份

amrecover> setdisk /home/data
200 Disk set to /home/data.
amrecover>

5.查看备份的时间

amrecover> history
200- Dump history for config "ServerNetBackup" host "client1" disk /home/data
201- 2014-12-25-20-07-22 0 ServerNetBackup-1:1
201- 2014-12-25-17-21-32 0 ServerNetBackup-8:1
200 Dump history for config "ServerNetBackup" host "client1" disk /home/data
amrecover>

6.选择一个还原备份的时间点

amrecover> setdate 2014-12-25-20-07-22
200 Working date set to 2014-12-25-20-07-22.
amrecover> ls
2014-12-25-20-07-22 Python-2.7.3-1.x86_64_mccq6.2.rpm
2014-12-25-20-07-22 .
amrecover>

7.选择要还原的文件

amrecover> add * #或者add filename
Added file /Python-2.7.3-1.x86_64_mccq6.2.rpm
amrecover>

8.还原备份

amrecover> extract
Extracting files using tape drive chg-disk on host office.servering.com.
The following tapes are needed: ServerNetBackup-1
Restoring files into directory /data/backup/tmp
Continue [?/Y/n]? y
Extracting files using tape drive chg-disk on host office.servering.com.
Load tape ServerNetBackup-1 now
Continue [?/Y/n/s/d]? y
./Python-2.7.3-1.x86_64_mccq6.2.rpm
amrecover>

9.退出amrecover

amrecover> quit

 

在客户端1上还原客户端2的数据

1.进入将要restore备份的目录

cd /data/backup/tmp

2.连接amanda服务器

amrecover ServerNetBackup -s office.servering.com

3.列出所有客户端

amrecover> listhost
200- List hosts for config ServerNetBackup
201- client1
201- client2.org
200 List hosts for config ServerNetBackup

4.选择要还原的客户端

amrecover> sethost client1
200 Dump host set to client1.

5.开始还原,还原过程如上

 

在服务器端还原数据

1.以root用户创建还原数据存放的目录

mkdir -pv /data/amandatest2
chown amandabackup.disk amandatest2

2.以amandabackup用户还原数据

su - amandabackup
cd /data/amandatest2
#查看当前服务器上所有客户端的备份目录
amadmin ServerNetBackup find
# 用法
amadmin ServerNetBackup find [<hostname> [<disks>]* ]*
amadmin ServerNetBackup find

返回:

date host disk lv tape or file file part status
2014-12-25 17:21:32 client1 /home/data 0 ServerNetBackup-8 1 1/1 OK
2014-12-25 20:07:22 client1 /home/data 0 ServerNetBackup-1 1 1/1 OK
2015-01-05 11:07:51 client1 /home/data 0 ServerNetBackup-3 1 1/1 OK
2014-12-25 17:21:32 client2.org /data2 0 ServerNetBackup-8 2 1/1 OK
2014-12-25 20:07:22 client2.org /data2 1 ServerNetBackup-1 2 1/1 OK
2014-12-29 10:42:35 client2.org /data2 1 ServerNetBackup-2 1 1/1 OK
2015-01-05 11:07:51 client2.org /data2 0 ServerNetBackup-3 2 1/1 OK

3.选择一个客户端来还原数据

用法
Usage: amfetchdump [options] config hostname [diskname [datestamp [level [hostname [diskname [datestamp [level ... ]]]]]]] [-o configoption]*
还原客户端1的数据
amfetchdump ServerNetBackup client1 /home/data 20141225172132

4.查看还原目录下的数据

-bash-4.1$ ll
total 28232
-rw-r----- 1 amandabackup disk 28907520 Jan 8 16:29 client1._home_data.20141225172132.0
得到还原数据的格式是一个tar压缩包(这是在备份时已经定义好的备份格式)
-bash-4.1$ file client1._home_data.20141225172132.0
client1._home_data.20141225172132.0: POSIX tar archive

5.对文件解压缩

tar xf client1._home_data.20141225172132.0
返回如下:
-rw-r----- 1 amandabackup disk 28907520 Jan 8 16:29 client1._home_data.20141225172132.0
-rw-r--r-- 1 amandabackup disk 28898417 Dec 25 17:21 Python-2.7.3-1.x86_64_mccq6.2.rpm

 

五、Amanda的优缺点

 

amanda的优点

1.Amanda的安装和操作都非常简单。它提供了rpm安装包和tar安装包,根据它的安装手 册,可以在15分钟安装完成一台服务器和三台客户端。安装完成之后,不需要更多的操作。 恢复也只需要使用amrecover盯这一条命令即可。 

2.Amanda可以根据数据的更新速度,选择不同的备份频率,可以选择每天备份或者每周 备份。 

3.采用c/s模式,安全性较好。恢复时,只需要在客户端进行操作,不会改变服务 器上的备份文件. 

4.Amanda兼容性很好,它支持windows系统和多种Linux系统。服务器能够识别到的磁 带驱动器,Amanda就可以直接使用。 

5.Amanda使用的备份程序是Linux自带的tar和dump,一旦Amanda本身出现问题,也可 以用tar或者restore这些标准Linux命令恢复文件。 

6.Amanda的备份列表定义在disklist文件中,便于添加或者删除需要备份的数据. 

7.Amanda支持同时写入磁盘和磁带,实现了在线和离线两种保存方式,提高了容灾性。 

8.Amanda使用磁盘作为备份文件的缓存区,这样既优化了磁带的写入性能,也保证了在 磁带出错时也能备份数据。Amanda支持并行数据传输,可提高备份速度。 

9.Amanda是免费软件,但是有自己的支持团队。在Amanda wiki里面提供了很多Amanda相关文档。

 

以上amanda的优点来自《基于Amanda的数据备份与恢复技术》 姚秋玲 (中科院高能物理研究所计算中心,北京,100049)

 

Amanda的缺点(也并不能算是缺点,只是不适合当前的项目而已)

 

 

1.Amanda是网络集中备份系统,对网络的依赖性比较强

2.在客户端没有生成一个备份,当数据需要恢复时,需要从服务器端拉取备份,如果当前的网络质量不好,恢复数据的时间会比较久

3.Amanda的备份列表在服务器端disklist文件中定义,当添加新的备份时需要维护这份文件列表

4.对服务器端的性能要求相对较高

5.服务器端的虚拟磁带需要规划好,如果备份的数据大小比设定的虚拟磁带的要大,数据会备份错误

6.当前需要备份的机器和机器需要备份的目录相对较多,如果备份集中到一台服务器上,管理起来会比较混乱,当然,对于需要备份的机器较少的情况,是可行的

posted on 2018-08-07 10:12  jackyzm  阅读(1167)  评论(0编辑  收藏  举报