用ChatGPT帮你写一个VPS定时自动备份脚本(转载)

对于一些喜欢折腾的小伙伴来说,经常会买一些奇奇怪怪的商家的服务器,这些商家提供的机器可能非常便宜,甚至免费,但也可能会随时会删机、或者跑路,大家的担心其实是有必要的。

然而,不管用的是啥服务器,不管商家有多高的在线率保证,只要你的数据对你来说是重要的,都非常建议多异地备份。

最近在用ChatGPT,想到其实完全可以让它来给我们写一个定时自动备份的脚本。

马上开整

bash
sudo -i    # 切换到root用户

vim backup.sh   # 编辑back.sh文件
#!/bin/bash

# 服务器A上的源目录
SRC_DIR="/root/data/docker_data"

# 服务器B上的目标目录
DST_DIR="/root/data/backup"

# 服务器B的IP地址
SERVER_B_IP="your_server_b_ip"

# 服务器B的SSH用户名
SSH_USER="your_ssh_username"

# 服务器B的SSH端口
SSH_PORT="2222"

# 备份文件前缀
BACKUP_NAME_PREFIX="docker_data_backup"

# 压缩文件格式
ARCHIVE_FORMAT="tar.gz"

# 生成备份文件名
current_date=$(date +"%Y%m%d_%H%M%S")
backup_filename="${BACKUP_NAME_PREFIX}_${current_date}.${ARCHIVE_FORMAT}"

# 压缩源目录
tar -czf "${backup_filename}" -C "${SRC_DIR}" .

# 传输备份文件到服务器B
scp -P "${SSH_PORT}" "${backup_filename}" "${SSH_USER}@${SERVER_B_IP}:${DST_DIR}"

# 删除本地备份文件
rm -f "${backup_filename}"

# 保留最多3个备份文件
ssh -p "${SSH_PORT}" "${SSH_USER}@${SERVER_B_IP}" "ls -t ${DST_DIR}/${BACKUP_NAME_PREFIX}* | tail -n +4 | xargs --no-run-if-empty rm -f"

chmod +x backup.sh

接下来,我们需要在A服务器上安装并配置SSH免密登录到B服务器。请在A服务器上执行以下命令:
# 安装sshpass(如已安装,请忽略)
sudo apt-get install sshpass

# 生成SSH密钥
ssh-keygen -t rsa -b 4096

# 一路回车即可


# 将公钥复制到B服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 服务器端口 user@B服务器IP地址


最后


crontab -e
30 4 * * * /root/backup.sh