通过Centos的自动备份功能将Docker进行远程备份防止数据丢失和损坏。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
GNU nano 4.8                                                   docker-backup.sh                                                             
#!/bin/bash

# 定义备份的日期和时间戳
backup_date=$(date +%Y%m%d)
timestamp=$(date +%H%M%S)

# 定义备份文件的路径和名称
backup_dir="/home/docker"
temp_backup_dir="/tmp/docker_backup"
backup_file="$temp_backup_dir/docker_${backup_date}-${timestamp}.tar.gz"

# 创建临时备份文件夹(如果不存在)
mkdir -p $temp_backup_dir

# 备份 Docker 数据到临时备份文件夹,并显示进度条
tar -cf - -C $backup_dir . | pv -s $(du -sb $backup_dir | awk '{print $1}') | gzip > $backup_file

# 将备份文件发送到 B 服务器的域名中,使用自定义 SSH 端口
pv $backup_file | ssh -p 708 [email protected] "cat > /mnt/samba/backup/docker_\$(date +%Y%m%d)-\$(date +%H%M%S).tar.gz"

# 清理临时备份文件夹
rm -rf $temp_backup_dir

# 在 B 服务器上删除最早的备份文件,保留最多三份
ssh -p 708 [email protected] 'cd /mnt/samba/backup && ls -t | tail -n +4 | xargs rm -rf'