近期客户有要求现在所使用的ETL模型必须做好备份。项目现场的ETL模型都是存储在kettle资源库中,所以也就是需要将资源库做好备份。
下面就是kettle资源库备份脚本代码。需要有几个先决条件,您才能够使用。
- 服务器上已安装kettle客户端
pdi-ce-9.3.0.0-428,这是9.3版本,其他版本也可以,但最好不要低于8.2。
- 确保repositories.xml中的资源库信息正确
路径:.kettle/repositories.xml(在你当前用户的家目录下);下面是个示例,大家可以拷贝拿去改下使用。
<?xml version="1.0" encoding="UTF-8"?>
<repositories>
<repository>
<id>PentahoEnterpriseRepository</id>
<name>frdf</name>
<description>qdzhang的资源库</description>
<is_default>true</is_default>
<repository_location_url>http://192.168.59.66:8080/pentaho</repository_location_url>
<version_comment_mandatory>N</version_comment_mandatory>
</repository>
</repositories>
- 确保kettle资源库服务端没挂
#!/bin/bash
SOU_PATH="/etl/data-integration"
BAC_PATH="/shellscript/testdir/backdir"
RIQI=$(date +"%Y%m%d%H%M%S")
#切换到pan.sh文件所在目录下
cd $SOU_PATH
echo " "
echo -e "\e[32m 开始导出资源库! \e[0m";
#导出kettle资源库文件,默认导出位置是pan.sh所在位置,每次导出会覆盖上次同名导出文件。
./pan.sh -rep frdf -user qdz -pass 1 -exprep=KettleBackup.xml &> /dev/null
echo -e "\e[32m 资源库导出完成! \e[0m";
echo " "
echo -e "\e[32m 5秒后开始备份! \e[0m";
sleep 5
#将 “资源库导出文件” 复制到 “备份目录”下。
find -name "KettleBackup.xml" -exec cp {} /shellscript/testdir/backdir/KettleBackup_$RIQI \;
echo " "
echo -e "\e[32m 备份已完成! \e[0m";
#切换到备份目录。
cd $BAC_PATH
#找出备份目录下7天前备份的kettle资源库文件,并删除。
find -name "*.xml" -ctime +7 -exec rm -rf {} \;
echo " "
echo -e "\e[31m 已将7天前的备份删除! \e[0m";
最近时间紧,这篇没有很详细,有疑问的朋友可以留言或者私信;谢谢您的阅读。