为了方便统一的备份多台主机,不同目录下的文件,我写了如下脚本,命令为runbackup.pl,将主机信息,目录信息写到yaml文件中,然后运行脚本做一个统一的备份:
ymal文件如下:
[root@centerws bin]# cat runbackup.yml
---
site1:
host: host1
source_path: /mnt/www
des_path: /home/backup-files
arch_name: site1
filelist:
- sueprsun.biz
comment: 站点1
site2:
host: host2
source_path: /home/site
des_path: /home/backup-files
arch_name: site2
filelist:
- site2
comment: 站点2
bbs:
host: bbs
source_path: /home/jboss/server/default/deploy
des_path: /home/backup-files
arch_name: bbs
filelist:
- bbs.war
- bbs-ds.xml
comment: 论坛
运行脚本:
[root@centerws bin]#
runbackup.pl all这样就会在本机的/home/backup-files下创当天的备份,目录为:6-30
如果执行单独的备份
[root@centerws bin]#
runbackup.pl bbs脚本内容如下,没有什么技术含量,主要是要学会在脚本中使用ymal文件着为配置文件:
#!/usr/bin/perl -w
use strict;
use YAML;
sub backupfiles {
my ($host,$source_path,$des_path,$arch_name,@backupfiles)=@_;
#创建目录
mkdir $des_path unless -d $des_path;
#进入目录
chdir $des_path;
#创建主机名目录
mkdir $host unless -d $host;
chdir $host;
#执行shell命令
`ssh $host "cd $source_path;tar zcvf - @backupfiles " >$arch_name`;
}
#指定yaml文件路径
my $file="/root/bin/runbackup.yml";
#读放配置文件
my $hashref=YAML::LoadFile($file);
#获取日期信息
my ($MONTH,$DAY)=(localtime)[4,3];
$MONTH++;
#获取命令行参数
my $key=shift;
#执行一个全备份
if ($key eq "all"){
foreach my $key (keys %$hashref)
{
#获取主机名
my $host=$$hashref{$key}{host};
#源路径名
my $source_path=$$hashref{$key}{source_path};
#备份路径
my $des_path=$$hashref{$key}{des_path};
#在备份路径上加一层日期目录
$des_path=${des_path}."/".${MONTH}."-".${DAY};
#打包文件名
my $arch_name=$$hashref{$key}{arch_name};
#备份文件列表
my @backupfiles=@{$$hashref{$key}{filelist}};
#打包文件名中添加日期信息
$arch_name=${arch_name}.".${MONTH}-${DAY}.tgz";
#使用ssh和tar进行备份
backupfiles($host,$source_path,$des_path,$arch_name,@backupfiles);
}
}else{
#执行某一项目备份
my $host=$$hashref{$key}{host};
my $source_path=$$hashref{$key}{source_path};
my $des_path=$$hashref{$key}{des_path};
$des_path=${des_path}."/".${MONTH}."-".${DAY};
my $arch_name=$$hashref{$key}{arch_name};
my @backupfiles=@{$$hashref{$key}{filelist}};
$arch_name=${arch_name}.".${MONTH}-${DAY}.tgz";
backupfiles($host,$source_path,$des_path,$arch_name,@backupfiles);
}
|
阅读(929) | 评论(0) | 转发(0) |