51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

【Linux-脚本】❌删库跑路?教你配置服务器定时备份📂!

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 {#三-安装sshpass}

apt install sshpass

四、主动连接一次SFTP服务器 {#四-主动连接一次SFTP服务器}

sftp dest_user@est_server

image-1698333929466

五、定时执行 {#五-定时执行}

每晚零点和每日中午12点自动备份

sudo apt install -y cron
sudo systemctl start cron
sudo systemctl enable cron

crontab -e

0 */12 * * * /root/docker_backup.sh

六、结果展示 {#六-结果展示}

赞(2)
未经允许不得转载:工具盒子 » 【Linux-脚本】❌删库跑路?教你配置服务器定时备份📂!