f#!/bin/bash export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:$PATH : ' Copyright (C) 2022 - now HaoZi Technology Co., Ltd. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. ' source <(curl -f -s --connect-timeout 10 --retry 3 https://dl.cdn.haozi.net/panel/public.sh) if [ $? -ne 0 ]; then echo "下载 public.sh 失败,请检查网络或稍后重试。" echo "Download public.sh failed, please check the network or try again later." exit 1 fi channel=${1} version=${2} if [ ${OS} == "rhel" ]; then dnf install -y rsync elif [ ${OS} == "debian" ] || [ ${OS} == "ubuntu" ]; then apt-get install -y rsync else error "不支持的操作系统" fi if [ "$?" != "0" ]; then error "rsync 安装失败" fi # 写入配置 cat >/etc/rsyncd.conf <<EOF uid = root gid = root port = 873 use chroot = no read only = no dont compress = *.jpg *.jpeg *.png *.gif *.webp *.avif *.mp4 *.avi *.mov *.mkv *.mp3 *.wav *.aac *.flac *.zip *.rar *.7z *.gz *.tgz *.tar *.pdf *.epub *.iso *.exe *.apk *.dmg *.rpm *.deb *.msi hosts allow = 127.0.0.1/32 ::1/128 # hosts deny = max connections = 100 timeout = 1800 lock file = /var/run/rsync.lock pid file = /var/run/rsyncd.pid log file = /var/log/rsyncd.log EOF touch /etc/rsyncd.secrets chmod 644 /etc/rsyncd.conf chmod 600 /etc/rsyncd.secrets # 写入服务文件 cat >/etc/systemd/system/rsyncd.service <<EOF [Unit] Description=fast remote file copy program daemon After=network-online.target remote-fs.target nss-lookup.target Wants=network-online.target ConditionPathExists=/etc/rsyncd.conf [Service] ExecStart=/usr/bin/rsync --daemon --no-detach "\$OPTIONS" ExecReload=/bin/kill -HUP \$MAINPID KillMode=process Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable --now rsyncd panel-cli app write rsync ${channel} ${version}