树莓派 Linux系统自动压缩文件,备份到外置硬盘

因为昨天一个命令行把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 国际许可协议进行许可。

相关推荐

Ubuntu 开启cron日志

✅ 1、打开终端。 ✅ 2、编辑 rsyslog 配置文件以将 cron 记录发送到指定文件。 你可以使用你喜 ...

暂无评论

目录展开