因为昨天一个命令行把docker文件夹都删了,丢了好多数据。
所有买了个外置硬盘插到树莓派上,写个脚本自动备份到外置硬盘上。
这样就不怕误删的问题了。
1、备份脚本
新脚本
#!/bin/bash
# 设置变量
MNT_256G_DOCKER_PATH="/mnt/256G/docker"
MNT_1T_PATH="/mnt/1T"
DATE=$(date +"%Y-%m-%d")
ARCHIVE_NAME="$DATE.tar.gz"
ARCHIVE_PATH="$MNT_1T_PATH/$ARCHIVE_NAME"
# 计算 /mnt/256G/docker 中的文件和文件夹总数
total_files=$(find $MNT_256G_DOCKER_PATH -type f | wc -l)
total_dirs=$(find $MNT_256G_DOCKER_PATH -mindepth 1 -type d | wc -l)
# 如果总文件数和文件夹为零,则无需压缩
if [ $total_files -eq 0 ] && [ $total_dirs -eq 0 ]; then
echo "没有文件或文件夹需要压缩。"
exit 0
fi
# 开始压缩并计时
echo "开始压缩 /mnt/256G/docker 到 $ARCHIVE_PATH..."
start_time=$(date +%s)
tar -czf $ARCHIVE_PATH -C $MNT_256G_DOCKER_PATH . &
pid=$!
# 等待压缩完成,同时显示时间
while kill -0 $pid 2>/dev/null; do
current_time=$(date +%s)
elapsed_time=$((current_time - start_time))
echo -ne "已压缩时间: ${elapsed_time} 秒\r"
sleep 1
done
wait $pid # 等待后台压缩进程结束
tar_status=$?
echo -ne "已压缩时间: ${elapsed_time} 秒\n"
# 检查压缩是否成功
if [ $tar_status -eq 0 ]; then
echo "压缩成功完成。"
# 删除 /mnt/256G/docker 文件夹里的压缩包
echo "正在删除 /mnt/256G/docker 中的原始压缩包..."
find $MNT_256G_DOCKER_PATH -name '*.tar.gz' -type f -delete
echo "原始压缩包已删除。"
else
echo "压缩失败。"
fi
旧脚本
#!/ibin/bash
cd /home
rm -rf *.tar
tar -cvf aliyun.tar aliyun
tar -cvf bitwarden.tar bitwarden
tar -cvf frp.tar frp
tar -cvf heimdall.tar heimdall
tar -cvf hexo.tar hexo
tar -cvf homeassistant_data.tar homeassistant_data
tar -cvf ql.tar ql
tar -cvf shell.tar shell
tar -cvf wiz.tar wiz
tar -cvf redis.tar redis
cd /media/saiita/ZHITAI PSSD Jupiter10 512GB/docker_bak
rm -r *
mv /home/*tar /media/saiita/ZHITAI PSSD Jupiter10 512GB/docker_bak
2、crontab 添加定时任务
进入crontab
crontab -e
添加定时任务
0 3 * * * /home/shell/bak.sh
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
暂无评论
要发表评论,您必须先 登录