Shell常用脚本:Gitblit迁移以及备份

x33g5p2x  于2022-07-22 转载在 其他  
字(1.7k)|赞(0)|评价(0)|浏览(834)

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目录中

相关文章