#!/bin/bash
# 配置区(按需修改)
TARGET_DIR="/var/www/project" # 目标目录路径
USER_NAME="有sudo密码的当前用户" # 临时所有者用户名
DEFAULT_OWNER="www-data" # 默认所有者
# 预检函数
precheck() {
# 检查目录是否存在[3](@ref)
if [ ! -d "$TARGET_DIR" ]; then
echo "[错误] 目录 $TARGET_DIR 不存在"
exit 1
fi
# 检查当前用户是否具有sudo权限[6](@ref)
if ! sudo -n true 2>/dev/null; then
echo "[提示] 需要sudo权限,请输入密码:"
if ! sudo -v; then
echo "[错误] 无法验证sudo权限"
exit 1
fi
fi
}
# 主执行流程
main() {
# 步骤1:修改目录所有者[1,3](@ref)
echo "▷ 修改目录所有者为 $USER_NAME..."
sudo chown -R "${USER_NAME}:${USER_NAME}" "$TARGET_DIR" || {
echo "[错误] 权限修改失败"; exit 2
}
# 步骤2:执行Git操作[5](@ref)
echo "▷ 进入目录执行Git更新..."
(
cd "$TARGET_DIR" || exit 3
git pull || {
echo "[警告] Git拉取失败,检查网络或仓库状态"
exit 4
}
)
# 步骤3:恢复目录权限[3,8](@ref)
echo "▷ 恢复目录所有者为 $DEFAULT_OWNER..."
sudo chown -R "${DEFAULT_OWNER}:${DEFAULT_OWNER}" "$TARGET_DIR" || {
echo "[错误] 权限恢复失败"; exit 5
}
echo "✅ 所有操作已完成"
}
# 执行入口
precheck
main