1panel 服务器目录自动备份到另一块硬盘

发布于 2026年09月03日

方案 A(最推荐,镜像同步,直接原样复制到第二块硬盘,无压缩包)

用【计划任务 → Shell 脚本】+ rsync,绕开备份账号功能

  1. 计划任务 → 创建任务 → 任务类型:Shell脚本

  2. 执行周期自定义(例如每天凌晨 2 点)

  3. 脚本内容(你只需要改里面 2 条源文件夹路径、第二块硬盘备份目录)

#!/bin/bash
#需要备份的2个源文件夹
SOURCE_1="/文件夹路径"
SOURCE_2="/文件夹路径"
#👉这里改成你第二块硬盘实际挂载的备份文件夹路径
DEST_DIR="第二块硬盘备份文件夹路径"

#自动创建备份目录
mkdir -p "$DEST_DIR/folder1"
mkdir -p "$DEST_DIR/folder2"

#增量同步备份
rsync -av "$SOURCE_1/" "$DEST_DIR/folder1/"
rsync -av "$SOURCE_2/" "$DEST_DIR/folder2/"

echo "备份完成 $(date)"

方案 B(生成 zip 压缩快照备份,新版 1Panel 本地磁盘的正确用法)

新版面板本地磁盘备份账号是内置自带、不能新建

  1. 创建计划任务 → 任务类型:备份目录

  2. 备份账号下拉直接选择:服务器磁盘(自带选项,无需新建)

  3. 这个默认服务器磁盘默认备份路径:/opt/1panel/backup(系统盘!!)

❗缺点:备份包默认只能存系统盘,不能直接修改备份目标盘为第二块硬盘

👉补救:备份完自动移动压缩包到第二块硬盘 需要分成两条 Shell 任务:

任务 1:定时执行【备份目录】备份到系统盘默认目录

任务 2:延迟几分钟运行 shell 脚本,把生成好的 zip 备份文件移动到第二块硬盘

#!/bin/bash
mv /opt/1panel/backup/*.zip /mnt/disk2/backup/

对比选择建议

  • 想要文件夹实时镜像、随时打开查看文件,不要解压 → 方案 A rsync 脚本(首选)

  • 想要打包 zip 快照、保留多历史版本 → 方案 B

方案 C‑Shell 脚本(生成压缩备份,自动清理旧备份,最多保留 10 份)

第一步:先安装 zip 工具

SSH 登录服务器执行:

如果Ubuntu 系统没有安装 zip 打包工具,请先安装

apt update
apt install zip -y

1Panel → 计划任务 → 创建任务 → Shell 脚本

#!/bin/bash
#################### 配置区 ####################
# 需要备份的两个文件夹
SOURCE1="文件夹路径"
SOURCE2="文件夹路径"
# 第二块硬盘备份存放目录
BACKUP_DIR="第二块硬盘备份文件夹路径"
# 最多保留最近10份备份
KEEP_NUM=10
################################################

# 创建备份根目录
mkdir -p "$BACKUP_DIR"

# 生成带时间戳的备份文件名
TIME_STAMP=$(date +%Y%m%d_%H%M%S)
ZIP_NAME="backup_${TIME_STAMP}.zip"
ZIP_PATH="${BACKUP_DIR}/${ZIP_NAME}"

# 压缩两个目录
zip -r "$ZIP_PATH" "$SOURCE1" "$SOURCE2"

# 删除旧备份:只保留最新10个,多余全部删掉
ls -1t "${BACKUP_DIR}"/backup_*.zip | tail -n +$((KEEP_NUM + 1)) | xargs -r rm -f

echo "备份完成:${ZIP_PATH},旧文件清理完毕 $(date)"

如果不想安装 zip,下面请使用linux自带 tar 打包的替代脚本。

zip vs tar 对比(服务器备份场景)

1、核心区别

zip

  • 跨平台:Windows、Mac、Linux 都能直接双击解压

  • 权限会丢失:Linux 文件所有者、执行权限解压后不会保留

  • 可以单独增删压缩包里某个文件

  • 命令:zip -r / unzip

tar(推荐服务器 Linux 备份首选)

tar 本身只是打包,不加压缩;一般搭配 gz 压缩 tar -z.tar.gz

  • 原生 Linux 工具,完整保留文件权限、属主、软链接(网站、halo 博客备份非常重要!)

  • 压缩率略高于 zip,生成文件更小

  • 解压后文件属性和备份前一模一样,不会出奇怪权限问题

  • Windows 也可以用 7‑zip 解压 tar.gz

#!/bin/bash
#################### 配置区 ####################
SOURCE1="文件夹路径"
SOURCE2="文件夹路径"
BACKUP_DIR="第二块硬盘文件夹路径"
KEEP_NUM=10
################################################

mkdir -p "$BACKUP_DIR"
TIME_STAMP=$(date +%Y%m%d_%H%M%S)
FILE_NAME="backup_${TIME_STAMP}.tar.gz"
FULL_PATH="${BACKUP_DIR}/${FILE_NAME}"

#打包压缩两个目录
tar -zcvf "$FULL_PATH" "$SOURCE1" "$SOURCE2"

#校验文件是否生成成功
if [ ! -f "$FULL_PATH" ];then
    echo "备份压缩失败!"
    exit 1
fi

#清理旧备份,保留最近10份
ls -1t "${BACKUP_DIR}"/backup_*.tar.gz 2>/dev/null | tail -n +$((KEEP_NUM + 1)) | xargs -r rm -f

echo "备份完成:${FULL_PATH},旧文件清理完毕 $(date)"