为什么我的自动备份不起作用并且没有给出任何错误?

问题描述 投票:0回答:1

我需要将数据从专用服务器备份到文件服务器,并找到了这篇文章:https://www.arubacloud.com/tutorial/how-to-make-an-automatic-backup-of-the-server -通过-sftp.aspx到云

我对脚本和服务器总体来说还很陌生,所以请直接跟我说。 我在服务器上运行 Debian 12 并安装了 Pterodactyl Server 面板。 我想备份各个服务器并压缩文件。

我按照文章中的步骤操作,但由于某种原因它不起作用,但我也没有收到错误。

我的backupscriptpt1.sh脚本:

sudo zip backup_$(date +"%m_%d_%Y").zip /var/lib/pterodactyl/volumes/b41c4156-3a31-4c53-9bd7-adcf18e8ae4d
sudo sshpass -p 'REDACTED' sftp REDACTED@REDACTED:/home/playtest_1 <<<$'put backup_'$(date +"%m_%d_%Y")'.zip'
#sudo rm -r /path/backup_$(date +"%m_%d_%Y").zip

我测试了文件夹是否正确,它显示了我要备份的服务器中的所有文件。

当我像这样执行脚本时:

./backupscriptpt1.sh
它给了我这个输出:

root@Debian-bookworm-latest-amd64-base / # ./backupscriptpt1.sh
updating: var/lib/pterodactyl/volumes/b41c4156-3a31-4c53-9bd7-adcf18e8ae4d/ (stored 0%)
root@Debian-bookworm-latest-amd64-base / #

它不会生成 .zip 文件,也不会将 zip 文件发送到我的备份服务器。

有谁知道为什么这不起作用吗?

(正如你可能看到的,我正在尝试备份翼龙服务器。翼龙正在使用 docker,这可能是问题所在吗?)

docker server zip debian backup
1个回答
0
投票

您的备份脚本存在一些潜在问题,可能会导致其无法按预期工作:

  1. Zip 命令路径:当您使用

    zip
    而不指定完整路径(
    /usr/bin/zip
    )时,由于 PATH 设置或权限不同,可能会在脚本的执行环境中找不到它。为了确保找到它,请指定
    zip
    的完整路径。

  2. 工作目录:确保您的脚本从

    /var/lib/pterodactyl/volumes/b41c4156-3a31-4c53-9bd7-adcf18e8ae4d
    所在的正确工作目录运行。如果没有,请在脚本中提供目录的绝对路径。

  3. SSH 连接:默认情况下,您的 Debian 服务器上可能未安装

    sshpass
    命令。如果缺少,请使用
    apt install sshpass
    安装它。

  4. SSH 身份验证:出于安全原因,通常不建议使用

    sshpass
    和明文密码。请考虑为您的 SFTP 连接设置基于 SSH 密钥的身份验证。

  5. 命令执行顺序:在尝试通过 SFTP 传输 zip 文件之前,请确保

    zip
    命令已完成。
    <<<$'put ...'
    语法可能无法按预期工作;相反,请使用正确的 SFTP 命令行或脚本来传输文件。

这是脚本的更新版本,进行了一些改进:

#!/bin/bash

# Define variables
BACKUP_DIR="/var/lib/pterodactyl/volumes/b41c4156-3a31-4c53-9bd7-adcf18e8ae4d"
BACKUP_FILE="backup_$(date +"%m_%d_%Y").zip"
REMOTE_USER="REDACTED"
REMOTE_HOST="REDACTED"
REMOTE_DIR="/home/playtest_1"

# Ensure zip is found and create the backup archive
/usr/bin/zip "$BACKUP_FILE" "$BACKUP_DIR"/*

# Transfer the backup file using SFTP (replace sshpass with key-based auth for security)
sftp -oBatchMode=no -b - "$REMOTE_USER@$REMOTE_HOST" << EOF
put "$BACKUP_FILE" "$REMOTE_DIR/$BACKUP_FILE"
quit
EOF

# Clean up (uncomment if you want to remove the local backup file after transfer)
# rm "$BACKUP_FILE"

备注:

  • zip
    的路径:确保
    /usr/bin/zip
    正确;如有必要,请根据您的系统配置进行调整。
  • 绝对路径:使用绝对路径 (
    $BACKUP_DIR/*
    ) 确保
    zip
    包含备份中的所有文件。
  • SFTP 传输:直接使用
    sftp
    进行文件传输,确保语法正确(此处文档中的
    put
    命令)。
  • 清理:如果您想在传输后删除本地备份文件,请取消注释
    rm "$BACKUP_FILE"

确保在这些调整后再次测试脚本。如果问题仍然存在,请检查系统日志(

/var/log/syslog
/var/log/auth.log
)是否有任何相关错误消息,这些消息可能会进一步了解问题所在。

© www.soinside.com 2019 - 2024. All rights reserved.