backupGitblitToOtherService.sh
#/bin/bash
# 注意1:使用此脚本前必须在本机运行 【ssh-keygen】生成公私密钥文件,然后用【ssh-copy-id -i 本机公钥文件 远程用户名@远程IP】将本机公钥给远>程主机
#
# 注意2:迁移到其他机器使用:只需修改 sourceGitbliDir targetGitblitDir targetIp 变量即可
# 本机gitblit目录
sourceGitbliDir=/www/server/gitblit_local/gitblit-1.9.3
sourceDirDataGit=${sourceGitbliDir}/data/git
# 远程主机gitblit的目录
targetGitblitDir=/www/server/gitblit_local/gitblit-1.9.3
targetLinuxUser='root'
targetIp='192.168.80.129'
targetDirData=${targetGitblitDir}/data
# 远程IP地址检测
echo "====检测目标地址${targetIp}网络连通性,请耐心等待===="
if ( ping -c 2 ${targetIp} &>/dev/null ); then
echo "目标地址${targetIp}:通"
else
# 直接退出整个Shell脚本
echo "错误:目标地址${targetIp}:不通,请检查当前主机与目标主机网络连通性"
exit 1
fi
echo '====开始备份===='
echo "本机即将备份的源目录:【${sourceDirDataGit}】"
echo "远程目标IP地址、用户、目标目录: ${targetIp}、${targetLinuxUser}、【${targetDirData}】"
if (ssh root@${targetIp} test -e ${targetGitblitDir}); then
echo '备份模式:仅备份data/git仓库、以及用户账号密码数据'
echo '====备份中,请耐心等待===='
# 运行此脚本时不将复制的文件日志显示出来,如果需显示请删掉 【 >/dev/null 2>&1】
scp -r ${sourceDirDataGit} ${targetLinuxUser}@${targetIp}:${targetDirData} >/dev/null 2>&1
scp ${sourceGitbliDir}/data/users.conf ${targetLinuxUser}@${targetIp}:${targetDirData}/users.conf >/dev/null 2>&1
else
echo '备份模式:Gitblit整个程序全量备份'
echo '====备份中,请耐心等待===='
targetGitblitParentDir=$(readlink -f ${targetGitblitDir} | xargs dirname)
# 创建Gitblit目录的父目录,因为scp不会主动创建父目录,不存在父目录则会传输报错
ssh root@${targetIp} "[ -d ${targetGitblitParentDir} ] || mkdir -p ${targetGitblitParentDir}"
# 运行此脚本时不将复制的文件日志显示出来,如果需显示请删掉 【 >/dev/null 2>&1】
scp -r ${sourceGitbliDir} ${targetLinuxUser}@${targetIp}:${targetGitblitParentDir} >/dev/null 2>&1
fi
echo '====结束备份===='
前提条件:源Gitblit的部署必须基于官方的脚本进行启动即gitblit.sh == 保证数据目录是在gitblit目录的data目录中
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_39651356/article/details/125901877
内容来源于网络,如有侵权,请联系作者删除!