Centos7 rsync远程(定时+实时)同步备份(一键卸载脚本)

脚本功能说明:

  这是一个用于CentOS 7系统的rsync远程备份同步服务一键卸载脚本,可以方便地清理和卸载定时备份与实时同步服务的相关组件。
  1. 卸载模式选择
    • 服务端:清理rsync服务端配置
    • 客户端:清理inotify和定时备份配置
    • 全部:同时清理服务端和客户端
  2. 清理内容
    • 停止并禁用相关服务(rsyncd/inotify_rsync)
    • 删除配置文件(/etc/rsyncd.*)
    • 删除日志文件
    • 删除生成的脚本文件(/opt/*.sh)
    • 清除定时任务
    • 卸载相关软件包(rsync/inotify-tools)
  3. 特别注意
    • 不会删除EPEL源
    • 不会自动删除备份目录(/opt/data_bak),会提示用户手动处理
    • 保留了系统原有的rsync依赖(如果有其他服务依赖)
  4. 安全设计
    • 每个删除操作前都会检查文件是否存在
    • 卸载后重新加载systemd
    • 清晰的彩色状态提示

使用建议:在卸载前,请确保已备份重要数据,特别是备份目录中的数据。

脚本仓库地址:

https://gitee.com/cncsrf/rsync-remote-backup
#!/bin/bash
# Rsync服务一键卸载脚本
# 功能: 卸载定时备份和实时同步服务

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 打印彩色欢迎信息
echo -e "${GREEN}"
echo "======================================================"
echo "   Centos7 rsync(远程定时和实时备份同步)一键卸载脚本              "
echo "======================================================"
echo -e "${NC}"
echo -e "${YELLOW}▌清理内容:${NC}"
echo -e "  ${GREEN}➤${NC} 停止并禁用相关服务 (rsyncd/inotify_rsync)"
echo -e "  ${GREEN}➤${NC} 删除配置文件 (/etc/rsyncd.*)"
echo -e "  ${GREEN}➤${NC} 清除定时任务"
echo -e "  ${GREEN}➤${NC} 删除日志文件 (/var/log/rsync_*.log)"
echo -e "  ${GREEN}➤${NC} 卸载相关软件包 (rsync/inotify-tools)"
echo -e "  ${GREEN}➤${NC} 删除systemd服务文件"
echo ""
echo -e "${RED}▌特别注意:${NC}"
echo -e "  ${YELLOW}⚠${NC} 不会自动删除备份目录 (需手动处理)"
echo -e "  ${YELLOW}⚠${NC} 不会卸载EPEL源"
echo -e "  ${YELLOW}⚠${NC} 保留系统原有的rsync依赖"
echo -e "  ${YELLOW}⚠${NC} 需要root权限执行"
echo -e "${BLUE}▌技术支持:${NC}https://gitee.com/cncsrf/rsync-remote-backup"
echo "============================================"
echo ""

# 检查root权限
if [ "$(id -u)" -ne 0 ]; then
    echo -e "${RED}错误:请使用root用户运行此脚本!${NC}" >&2
    exit 1
fi

# 选择卸载模式
echo -e "${YELLOW}请选择卸载模式:${NC}"
echo "1) 服务端(接收端)"
echo "2) 客户端(发送端)"
echo "3) 全部卸载"
read -p "输入数字 (1/2/3): " UNINSTALL_MODE

if [[ ! "$UNINSTALL_MODE" =~ ^[123]$ ]]; then
    echo -e "${RED}错误:请输入1、2或3!${NC}" >&2
    exit 1
fi

# 公共卸载函数
uninstall_common() {
    echo -e "${YELLOW}正在卸载公共组件...${NC}"
    
    # 停止并禁用rsync服务
    if systemctl is-active --quiet rsyncd; then
        systemctl stop rsyncd
        systemctl disable rsyncd
        echo -e "${GREEN}已停止rsyncd服务${NC}"
    fi
    
    # 删除rsync配置文件
    [ -f "/etc/rsyncd.conf" ] && rm -f /etc/rsyncd.conf && echo "已删除 /etc/rsyncd.conf"
    [ -f "/etc/rsyncd.secrets" ] && rm -f /etc/rsyncd.secrets && echo "已删除 /etc/rsyncd.secrets"
    
    # 删除日志文件
    [ -f "/var/log/rsync_backup.log" ] && rm -f /var/log/rsync_backup.log && echo "已删除 /var/log/rsync_backup.log"
    [ -f "/var/log/inotify_rsync.log" ] && rm -f /var/log/inotify_rsync.log && echo "已删除 /var/log/inotify_rsync.log"
    [ -f "/var/log/rsyncd.log" ] && rm -f /var/log/rsyncd.log && echo "已删除 /var/log/rsyncd.log"
    
    # 删除PID文件
    [ -f "/var/run/rsyncd.pid" ] && rm -f /var/run/rsyncd.pid && echo "已删除 /var/run/rsyncd.pid"
}

# 卸载服务端
uninstall_server() {
    echo -e "${RED}正在卸载服务端组件...${NC}"
    
    uninstall_common
    
    # 提示但不删除备份目录
    if [ -d "/opt/data_bak" ]; then
        echo -e "${YELLOW}注意:备份目录 /opt/data_bak 仍然存在,请手动处理${NC}"
    fi
    
    # 卸载rsync软件包(但不卸载依赖)
    if rpm -q rsync &>/dev/null; then
        yum remove -y rsync
        echo -e "${GREEN}已卸载rsync软件包${NC}"
    fi
    
    echo -e "${GREEN}服务端卸载完成!${NC}"
}

# 卸载客户端
uninstall_client() {
    echo -e "${RED}正在卸载客户端组件...${NC}"
    
    uninstall_common
    
    # 停止并删除inotify服务
    if systemctl is-active --quiet inotify_rsync; then
        systemctl stop inotify_rsync
        systemctl disable inotify_rsync
        echo -e "${GREEN}已停止inotify_rsync服务${NC}"
    fi
    
    [ -f "/etc/systemd/system/inotify_rsync.service" ] && rm -f /etc/systemd/system/inotify_rsync.service && echo "已删除 /etc/systemd/system/inotify_rsync.service"
    
    # 删除定时任务
    crontab -l | grep -v "/opt/rsync_backup.sh" | crontab -
    echo -e "${GREEN}已清除相关定时任务${NC}"
    
    # 卸载软件包(但不卸载EPEL)
    if rpm -q inotify-tools &>/dev/null; then
        yum remove -y inotify-tools
        echo -e "${GREEN}已卸载inotify-tools${NC}"
    fi
    
    if rpm -q rsync &>/dev/null; then
        yum remove -y rsync
        echo -e "${GREEN}已卸载rsync${NC}"
    fi
    
    echo -e "${GREEN}客户端卸载完成!${NC}"
}

# 执行卸载
case "$UNINSTALL_MODE" in
    1)
        uninstall_server
        ;;
    2)
        uninstall_client
        ;;
    3)
        uninstall_server
        uninstall_client
        ;;
esac

# 重新加载systemd
systemctl daemon-reload
echo -e "${GREEN}已重新加载systemd${NC}"

echo -e "${GREEN}============================================${NC}"
echo -e "${GREEN}           卸载操作已完成!                  ${NC}"
echo -e "${GREEN}============================================${NC}"