#!/bin/bash
log="/var/log/docker_backup.log"
declare docker_id=(`docker ps -a | awk '{print $1}'| grep -v "CONTAINER"`) #声明所有docker容器的id
declare docker_name=(`docker ps -a | awk '{print $2}' | awk -F/ '{print $NF}'| grep -v "ID" `) #声明所有docker容器的名字
if [ ! -d "~/docker_backup" ];then #判断存放备份文件的文件夹
mkdir -p ~/docker_backup
fi
for i in ${!docker_id[@]}
do
rm -f ~/docker_backup/${docker_name[i]}_$(date -d -20day +%Y-%m-%d).tar #删除前20天的备份
docker save -o ~/docker_backup/${docker_name[i]}_$(date "+%Y-%m-%d").tar ${docker_id[i]}
if [ $? -eq 0 ];then #如果成功备份写入log的日志
echo -e "$(date "+%Y-%m-%d %H:%M:%S") ${docker_name[i]} is finishing backup " >> ${log}
echo ""
else
echo -e "$(date "+%Y-%m-%d %H:%M:%S") ${docker_name[i]} is failure to backup ">> ${log}
fi
done
crontab -e
0 10 * * * sh ~/docker_backup.sh