本站镜像源 https://mirrors.xyh.moe:8888/ 同步脚本

#! /bin/bash

########################################################################################################################
# rsync
# -a 归档模式
# -v 详细输出
# -r 递归模式
# -t 保留修改时间
# -L 符号链接重定向为文件
# --delete 删除多余文件
# --no-motd 忽略 rsync daemon 的 MOTD 信息
# --quiet, -q 不显示 error 之外的信息
# --mkpath 在 DEST 上创建 DEST 指定的路径字符串中不存在的路径
########################################################################################################################
         debian=1
debian_security=1
      almalinux=1
          epel9=1
        centos7=1
          epel7=1
       dockerce=1
     kubernetes=1
      archlinux=0
    archlinuxcn=0
########################################################################################################################
readonly  MIRRORS_DIR='/mirrors'                        # 定义镜像根目录
readonly TSINGHUA_URL='mirrors.tuna.tsinghua.edu.cn'    # 清华大学
readonly      NJU_URL='mirrors.nju.edu.cn'              # 南京大学
readonly     USTC_URL='rsync.mirrors.ustc.edu.cn'       # 中国科学技术大学 
readonly     SJTU_URL='mirror.sjtu.edu.cn'              # 上海交通大学
########################################################################################################################
########################################################################################################################

if [[ "${debian}" == "1" ]];then # Debian
    if [[ ! -d $MIRRORS_DIR/debian/ ]];then
        mkdir -p $MIRRORS_DIR/debian/
    fi
    
    debmirror \
        --progress \
        --nosource \
        --no-check-gpg \
        -d bookworm,bookworm-updates \
        -a amd64 \
        --i18n \
        -e rsync \
        -h rsync.mirrors.ustc.edu.cn \
        -r debian \
        $MIRRORS_DIR/debian/
fi

if [[ "${debian_security}" == "1" ]];then # Debian Security
    if [[ ! -d $MIRRORS_DIR/debian-security/ ]];then
        mkdir -p $MIRRORS_DIR/debian-security/
    fi

    debmirror \
        --progress \
        --nosource \
        --no-check-gpg \
        -d bookworm-security \
        -a amd64 \
        --i18n \
        -e rsync \
        -h rsync.mirrors.ustc.edu.cn \
        -r debian-security \
        $MIRRORS_DIR/debian-security/
fi
########################################################################################################################
########################################################################################################################
if [[ "${almalinux}" == "1" ]];then # Almalinux 9
    printf "%-24s%s\n" Almalinux 9
    # AppStream
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/AppStream/x86_64/os/Packages/ $MIRRORS_DIR/almalinux/9/AppStream/x86_64/os/Packages/
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/AppStream/x86_64/os/repodata/ $MIRRORS_DIR/almalinux/9/AppStream/x86_64/os/repodata/

    # BaseOS
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/BaseOS/x86_64/os/Packages/ $MIRRORS_DIR/almalinux/9/BaseOS/x86_64/os/Packages/
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/BaseOS/x86_64/os/repodata/ $MIRRORS_DIR/almalinux/9/BaseOS/x86_64/os/repodata/

    # extras
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/extras/x86_64/os/Packages/ $MIRRORS_DIR/almalinux/9/extras/x86_64/os/Packages/
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/extras/x86_64/os/repodata/ $MIRRORS_DIR/almalinux/9/extras/x86_64/os/repodata/

    # CRB
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/CRB/x86_64/os/Packages/ $MIRRORS_DIR/almalinux/9/CRB/x86_64/os/Packages/
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/CRB/x86_64/os/repodata/ $MIRRORS_DIR/almalinux/9/CRB/x86_64/os/repodata/
    
    # HighAvailability
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/HighAvailability/x86_64/os/Packages/ $MIRRORS_DIR/almalinux/9/HighAvailability/x86_64/os/Packages/
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/HighAvailability/x86_64/os/repodata/ $MIRRORS_DIR/almalinux/9/HighAvailability/x86_64/os/repodata/
    
    # NFV
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/NFV/x86_64/os/Packages/ $MIRRORS_DIR/almalinux/9/NFV/x86_64/os/Packages/
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/NFV/x86_64/os/repodata/ $MIRRORS_DIR/almalinux/9/NFV/x86_64/os/repodata/
    
    # plus
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/plus/x86_64/os/Packages/ $MIRRORS_DIR/almalinux/9/plus/x86_64/os/Packages/
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/plus/x86_64/os/repodata/ $MIRRORS_DIR/almalinux/9/plus/x86_64/os/repodata/
    
    # ResilientStorage
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/ResilientStorage/x86_64/os/Packages/ $MIRRORS_DIR/almalinux/9/ResilientStorage/x86_64/os/Packages/
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/ResilientStorage/x86_64/os/repodata/ $MIRRORS_DIR/almalinux/9/ResilientStorage/x86_64/os/repodata/
    
    # RT
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/RT/x86_64/os/Packages/ $MIRRORS_DIR/almalinux/9/RT/x86_64/os/Packages/
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/RT/x86_64/os/repodata/ $MIRRORS_DIR/almalinux/9/RT/x86_64/os/repodata/
    
    # SAP
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/SAP/x86_64/os/Packages/ $MIRRORS_DIR/almalinux/9/SAP/x86_64/os/Packages/
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/SAP/x86_64/os/repodata/ $MIRRORS_DIR/almalinux/9/SAP/x86_64/os/repodata/
    
    # SAPHANA
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/SAPHANA/x86_64/os/Packages/ $MIRRORS_DIR/almalinux/9/SAPHANA/x86_64/os/Packages/
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/9/SAPHANA/x86_64/os/repodata/ $MIRRORS_DIR/almalinux/9/SAPHANA/x86_64/os/repodata/


    # GPG-KEY
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/RPM-GPG-KEY-AlmaLinux $MIRRORS_DIR/almalinux/RPM-GPG-KEY-AlmaLinux
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/almalinux/RPM-GPG-KEY-AlmaLinux-9 $MIRRORS_DIR/almalinux/RPM-GPG-KEY-AlmaLinux-9
fi
########################################################################################################################
########################################################################################################################
if [[ "${epel9}" == "1" ]];then # EPEL 9
    printf "%-24s%s\n" EPEL 9

    rsync -avrtL --delete --mkpath --no-motd rsync://$USTC_URL/epel/9/Everything/x86_64/Packages/ $MIRRORS_DIR/epel/9/Everything/x86_64/Packages/
    rsync -avrtL --delete --mkpath --no-motd rsync://$USTC_URL/epel/9/Everything/x86_64/repodata/ $MIRRORS_DIR/epel/9/Everything/x86_64/repodata/
    rsync -avrtL --delete --mkpath --no-motd rsync://$USTC_URL/epel/RPM-GPG-KEY-EPEL-9 $MIRRORS_DIR/epel/RPM-GPG-KEY-EPEL-9
fi
########################################################################################################################
########################################################################################################################
if [[ "${centos7}" == "1" ]];then # CentOS 7
    printf "%-24s%s\n" CentOS 7
    
    # os
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/centos-vault/centos/7/os/x86_64/ $MIRRORS_DIR/centos/7/os/x86_64/

    # updates
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/centos-vault/centos/7/updates/x86_64/ $MIRRORS_DIR/centos/7/updates/x86_64/

    # extras
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/centos-vault/centos/7/extras/x86_64/ $MIRRORS_DIR/centos/7/extras/x86_64/

    # GPG-KEY
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/centos/RPM-GPG-KEY-CentOS-7 $MIRRORS_DIR/centos/RPM-GPG-KEY-CentOS-7
fi
########################################################################################################################
########################################################################################################################
if [[ "${epel7}" == "1" ]];then # EPEL 7
    printf "%-24s%s\n" EPEL 7

    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/fedora-archive/epel/7/x86_64/Packages/ $MIRRORS_DIR/epel/7/x86_64/Packages/
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/fedora-archive/epel/7/x86_64/repodata/ $MIRRORS_DIR/epel/7/x86_64/repodata/
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/epel/RPM-GPG-KEY-EPEL-7 $MIRRORS_DIR/epel/RPM-GPG-KEY-EPEL-7
fi
########################################################################################################################
########################################################################################################################
if [[ "${dockerce}" == "1" ]];then # Docker-ce
    printf "%-24s%s\n" Docker-ce

    # CentOS 7
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/docker-ce/linux/centos/7/x86_64/stable/ $MIRRORS_DIR/docker-ce/linux/centos/7/x86_64/stable/

    # CentOS 9
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/docker-ce/linux/centos/9/x86_64/stable/ $MIRRORS_DIR/docker-ce/linux/centos/9/x86_64/stable/

    # GPG-KEY
    rsync -avrtL --delete --mkpath --no-motd rsync://$NJU_URL/docker-ce/linux/centos/gpg $MIRRORS_DIR/docker-ce/linux/centos/gpg

    # Debian 12
    rsync -avrtL --delete --mkpath --no-motd rsync://$USTC_URL/docker-ce/linux/debian/dists/bookworm/pool/stable/amd64/        $MIRRORS_DIR/docker-ce/linux/debian/dists/bookworm/pool/stable/amd64/
    rsync -avrtL --delete --mkpath --no-motd rsync://$USTC_URL/docker-ce/linux/debian/dists/bookworm/stable/binary-amd64/      $MIRRORS_DIR/docker-ce/linux/debian/dists/bookworm/stable/binary-amd64/
    rsync -avrtL --delete --mkpath --no-motd rsync://$USTC_URL/docker-ce/linux/debian/dists/bookworm/InRelease                 $MIRRORS_DIR/docker-ce/linux/debian/dists/bookworm/InRelease
    rsync -avrtL --delete --mkpath --no-motd rsync://$USTC_URL/docker-ce/linux/debian/dists/bookworm/Release                   $MIRRORS_DIR/docker-ce/linux/debian/dists/bookworm/Release
    rsync -avrtL --delete --mkpath --no-motd rsync://$USTC_URL/docker-ce/linux/debian/dists/bookworm/Release.gpg               $MIRRORS_DIR/docker-ce/linux/debian/dists/bookworm/Release.gpg
    rsync -avrtL --delete --mkpath --no-motd rsync://$USTC_URL/docker-ce/linux/debian/dists/bookworm/stable/Contents-amd64     $MIRRORS_DIR/docker-ce/linux/debian/dists/bookworm/stable/Contents-amd64
    rsync -avrtL --delete --mkpath --no-motd rsync://$USTC_URL/docker-ce/linux/debian/dists/bookworm/stable/Contents-amd64.bz2 $MIRRORS_DIR/docker-ce/linux/debian/dists/bookworm/stable/Contents-amd64.bz2
    rsync -avrtL --delete --mkpath --no-motd rsync://$USTC_URL/docker-ce/linux/debian/dists/bookworm/stable/Contents-amd64.gz  $MIRRORS_DIR/docker-ce/linux/debian/dists/bookworm/stable/Contents-amd64.gz

    # GPG-KEY
    rsync -avrtL --delete --mkpath --no-motd rsync://$USTC_URL/docker-ce/linux/debian/gpg $MIRRORS_DIR/docker-ce/linux/debian/gpg
fi
########################################################################################################################
########################################################################################################################
if [[ "${kubernetes}" == "1" ]];then # Kubernetes
    printf "%-24s%s\n" Kubernetes

    rsync -avrtL \
        --exclude="*/*/*/*/*/arm64/"   \
        --exclude="*/*/*/*/*/ppc64el/" \
        --exclude="*/*/*/*/*/s390x/"   \
        --exclude="*/*/*/*/*/aarch64/" \
        --exclude="*/*/*/*/*/ppc64le/" \
        --exclude="*/*/*/*/arm64/"     \
        --exclude="*/*/*/*/ppc64el/"   \
        --exclude="*/*/*/*/s390x/"     \
        --exclude="*/*/*/*/aarch64/"   \
        --exclude="*/*/*/*/ppc64le/"   \
        --exclude="*/*/*/arm64/"       \
        --exclude="*/*/*/ppc64el/"     \
        --exclude="*/*/*/s390x/"       \
        --exclude="*/*/*/aarch64/"     \
        --exclude="*/*/*/ppc64le/"     \
        --exclude="*/*/*/s390x/"       \
        --delete --mkpath --no-motd    \
        rsync://$NJU_URL/kubernetes/ $MIRRORS_DIR/kubernetes/
fi
########################################################################################################################
########################################################################################################################
if [[ "${archlinux}" == "1" ]];then # Archlinux
    printf "%-24s%s\n" Archlinux
    # core
    rsync -avrtL --delete --mkpath --no-motd rsync://$USTC_URL/archlinux/core/ $MIRRORS_DIR/archlinux/core/
    # extra
    rsync -avrtL --delete --mkpath --no-motd rsync://$USTC_URL/archlinux/extra/ $MIRRORS_DIR/archlinux/extra/
    # community
    rsync -avrtL --delete --mkpath --no-motd rsync://$USTC_URL/archlinux/community/ $MIRRORS_DIR/archlinux/community/
    # multilib
    rsync -avrtL --delete --mkpath --no-motd rsync://$USTC_URL/archlinux/multilib/ $MIRRORS_DIR/archlinux/multilib/
fi
########################################################################################################################
########################################################################################################################
if [[ "${archlinuxcn}" == "1" ]];then # Archlinuxcn
    printf "%-24s%s\n" Archlinuxcn
    rsync -avrtL --delete --mkpath --no-motd rsync://$USTC_URL/archlinuxcn/x86_64/ $MIRRORS_DIR/archlinuxcn/x86_64/
fi
########################################################################################################################