2023年8月8号凌晨00:21分,为什么这么晚了我还在写博客,是因为今天在整理服务器的时候,误操作把服务器的数据盘删了,不是用的sudo rm -rf,我的服务器在本地,部署在VMware里面,替换数据的时候点错了,选错了虚拟机😭。为了以后避免这种事情再次发生,借助于ChatGPT写了一个定时备份脚本,分享一下。
一、脚本内容
vi /root/docker_backup.sh
#!/bin/bash
# Source file details
source_file="/root/docker_data" #需要备份数据的文件夹
backup_folder="/root/backups"
# Create a backup folder if it doesn't exist
mkdir -p $backup_folder #创建备份文件backup_folder
# Backup filename with current timestamp
backup_filename="$(date +'%Y%m%d%H%M%S').tar.gz" #保存的文件名是执行此脚本的时间,年月日时分秒
# Compress the source file
tar -czf $backup_folder/$backup_filename $source_file #后缀是压缩文件夹tar.gz格式
# Destination server details
dest_server="your sftp server ip" #备份到目标服务器的IP
dest_user="user" #目标服务器sftp的账户(需要有写入权限和读取)
dest_password="password" #目标服务器sftp的密码
dest_folder="/docker_backup/" #备份文件到目标服务器sftp的存放路径
# SFTP command to upload the compressed backup file
sshpass -p "$dest_password" sftp $dest_user@$dest_server <<EOF
put $backup_folder/$backup_filename $dest_folder/
bye
EOF
# Clean up the local backup file
rm -rf /root/backups/* #删除刚刚压缩的文件,防止占用VPS硬盘空间
echo "Backup completed at $(date +'%Y-%m-%d %H:%M:%S')"
二、脚本赋权
chmod +777 docker_backup.sh
三、安装sshpass
apt install sshpass
四、主动连接一次SFTP服务器
sftp dest_user@est_server
五、定时执行
每晚零点和每日中午12点自动备份
sudo apt install -y cron
sudo systemctl start cron
sudo systemctl enable cron
crontab -e
0 */12 * * * /root/docker_backup.sh
六、结果展示