我如何通过多个作业 运行 向 运行 添加此脚本的循环
how can i add a loop to this script to run through multipul job runs
我已经编写了这个用于备份到我们的 AWS Glacier 帐户的基本 bash 脚本,它适用于 1 个项目,但我不想为每个项目使用 1 个脚本,而是使用这 1 个脚本批量服务器备份运行由目录中的多个配置文件控制说“/usr/local/src/glacier/* project1.cfg project2.cfg
这些 cfg 文件将包含 aws 凭据以及我脚本中当前配置部分中的相应信息,因为每个项目都会有所不同。但我是 bash 脚本编写的新手,所以我不确定该怎么做。
#!/bin/bash
PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
#### Configuration ####
DATE=$(date "+%d-%m-%y_%H-%M")
GLACIER_CONFIG=/usr/local/src/backup/mt-aws-glacier/glacier.cfg
ROOT=/home/backup/kev-test
VAULT=testboltonvault1
JOURNAL=/home/glacier_journal-test1.log
log_file="/var/log/glacier_test1_$DATE.log"
#######################
case in
sync)
/usr/local/src/backup/mt-aws-glacier/mtglacier sync --config $GLACIER_CONFIG --dir $ROOT --vault $VAULT --journal $JOURNAL --concurrency 3 >>$log_file 2>&1
;;
check)
/usr/local/src/backup/mt-aws-glacier/mtglacier check-local-hash --config=$GLACIER_CONFIG --dir $ROOT --vault=$VAULT --journal $JOURNAL >>$log_file 2>&1
;;
retrieve)
# warning, make sure DIR is correct, avoid disaster!
rm -rf $ROOT/*
/usr/local/src/backup/mt-aws-glacier/mtglacier check-local-hash -- config=$GLACIER_CONFIG --dir $ROOT --vault=$VAULT --journal=$JOURNAL >>$log_file 2>&1
/usr/local/src/backup/mt-aws-glacier/mtglacier restore - config=$GLACIER_CONFIG --dir $ROOT --vault=$VAULT -journal=$JOURNAL --max- number-of-files=10 >>$log_file 2>&1
;;
purge)
# warning, make sure DIR is correct, avoid disaster!
/usr/local/src/backup/mt-aws-glacier/mtglacier purge-vault - config=$GLACIER_CONFIG --dir $ROOT --vault=$VAULT --journal=$JOURNAL >>$log_file 2>&1
;;
restore)
/usr/local/src/backup/mt-aws-glacier/mtglacier restore-completed - config=$GLACIER_CONFIG --dir $ROOT --vault=$VAULT --journal=$JOURNAL >>$log_file 2>&1
;;
esac
你可以这样做:
for FILENAME in /usr/local/src/glacier/*
do
source $FILENAME
<your existing code>
done;
source
语句将包含配置文件,每次迭代都会覆盖变量。
我已经编写了这个用于备份到我们的 AWS Glacier 帐户的基本 bash 脚本,它适用于 1 个项目,但我不想为每个项目使用 1 个脚本,而是使用这 1 个脚本批量服务器备份运行由目录中的多个配置文件控制说“/usr/local/src/glacier/* project1.cfg project2.cfg
这些 cfg 文件将包含 aws 凭据以及我脚本中当前配置部分中的相应信息,因为每个项目都会有所不同。但我是 bash 脚本编写的新手,所以我不确定该怎么做。
#!/bin/bash
PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
#### Configuration ####
DATE=$(date "+%d-%m-%y_%H-%M")
GLACIER_CONFIG=/usr/local/src/backup/mt-aws-glacier/glacier.cfg
ROOT=/home/backup/kev-test
VAULT=testboltonvault1
JOURNAL=/home/glacier_journal-test1.log
log_file="/var/log/glacier_test1_$DATE.log"
#######################
case in
sync)
/usr/local/src/backup/mt-aws-glacier/mtglacier sync --config $GLACIER_CONFIG --dir $ROOT --vault $VAULT --journal $JOURNAL --concurrency 3 >>$log_file 2>&1
;;
check)
/usr/local/src/backup/mt-aws-glacier/mtglacier check-local-hash --config=$GLACIER_CONFIG --dir $ROOT --vault=$VAULT --journal $JOURNAL >>$log_file 2>&1
;;
retrieve)
# warning, make sure DIR is correct, avoid disaster!
rm -rf $ROOT/*
/usr/local/src/backup/mt-aws-glacier/mtglacier check-local-hash -- config=$GLACIER_CONFIG --dir $ROOT --vault=$VAULT --journal=$JOURNAL >>$log_file 2>&1
/usr/local/src/backup/mt-aws-glacier/mtglacier restore - config=$GLACIER_CONFIG --dir $ROOT --vault=$VAULT -journal=$JOURNAL --max- number-of-files=10 >>$log_file 2>&1
;;
purge)
# warning, make sure DIR is correct, avoid disaster!
/usr/local/src/backup/mt-aws-glacier/mtglacier purge-vault - config=$GLACIER_CONFIG --dir $ROOT --vault=$VAULT --journal=$JOURNAL >>$log_file 2>&1
;;
restore)
/usr/local/src/backup/mt-aws-glacier/mtglacier restore-completed - config=$GLACIER_CONFIG --dir $ROOT --vault=$VAULT --journal=$JOURNAL >>$log_file 2>&1
;;
esac
你可以这样做:
for FILENAME in /usr/local/src/glacier/*
do
source $FILENAME
<your existing code>
done;
source
语句将包含配置文件,每次迭代都会覆盖变量。