当前位置:首页VPS云服务器如何通过定时任务备份Docker数据

如何通过定时任务备份Docker数据

前言

由于我们之前的docker项目都是存放在/root/data/docker_data的目录下,所以今天目标就是将目录下的docker数据文件定时备份到另一台服务器上,即将A的/root/data/docker_data目录下的文件每天早上4点钟定时备份到B服务器的/root/data/backup_data文件夹下,同时达到以下要求

  • 备份文件在B服务器上最多保存3份,并以时间戳命名。
  • B服务器的IP地址是:222.157.xxx.xxx, ssh端口是22。(按需修改)
  • 备份的日志保存在A服务器的/root/logs文件夹下,并且日志包含时间信息 备份和传输的过程可以显示进度条,并且有提示信息,并且进度条最多显示100%(安装好pv,临时备份文件放在/tmp目录下,上传完成之后可以删掉)
  • 保留文件原有的属性(所有者等信息)
  • 恢复备份的时候,只有/root/data/docker_data中的内容而不包括/root/data/…完整路径

环境安装

sudo -i
cd ~
apt update -y && apt upgrade -y 
apt install pv rsync -y  # 注意A、B服务器上都装上rsync
mkdir script
vim backup.sh

编写脚本

#!/bin/bash

# Variables
SOURCE_DIR="/root/data/docker_data/"
DEST_DIR="/root/data/backup_data/"
REMOTE_IP="222.157.xxx.xxx"
SSH_PORT=22
TMP_BACKUP="/tmp/data_backup_$(date +'%Y%m%d%H%M%S').tar.gz"
LOG_FILE="/root/logs/backup_$(date +'%Y%m%d').log"

# Start backup
echo "$(date) - Starting backup..." | tee -a $LOG_FILE

# Create the backup with tar, display progress with pv
tar czfP - $SOURCE_DIR --absolute-names --transform 's|^/root/data/||' | pv -p -t -e -r -s $(du -sb $SOURCE_DIR | awk '{print $1}') > $TMP_BACKUP

# Rsync the backup to the remote server, displaying progress
rsync -avhP --remove-source-files -e "ssh -p $SSH_PORT" $TMP_BACKUP root@$REMOTE_IP:$DEST_DIR | tee -a $LOG_FILE

# Remove backups in B server exceeding 3
ssh -p $SSH_PORT root@$REMOTE_IP "cd $DEST_DIR && (ls -t | head -n 3; ls) | sort | uniq -u | xargs rm -f"

# Cleanup temp file in case rsync failed to remove it
rm -f $TMP_BACKUP

echo "$(date) - Backup completed." | tee -a $LOG_FILE
chmod +x backup.sh

目录创建

A服务器创建日志目录

cd ~
mkdir logs

B服务器创建备份目录

mkdir -p /root/data/backup_data/

免密登录

A、B服务器之间创建免密码登录

# 在A服务器上

sudo -i

ssh-keygen    # 一路回车即可

ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@222.157.xxx.xxx

开启定时

每天早上4点执行备份:

crontab -e

在crontab文件界面中输入:

0 4 * * * /root/script/backup.sh

 修改完后重启定时任务

sudo systemctl restart cron

参考资料
https://iwanlab.com/321-backup/

温馨提示:

文章标题:如何通过定时任务备份Docker数据

文章链接:https://www.flyecho.fun/4680.html/

更新时间:2024年06月04日

本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:505827773@qq.com我们将第一时间处理! 资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。 所有资源仅限于参考和学习,版权归原作者所有,更多请阅读渐入佳境使用条款

给TA买糖
共{{data.count}}人
人已买糖
VPS云服务器

VPS服务器常用脚本整理

2023-12-11 16:35:38

NAS折腾日记VPS云服务器

Lobe ChatGPT 图片识别 语音输入 3.5-4.0 支持多模型自带多Prompt

2023-12-14 17:18:31

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索