mac用脚本定时备份文件到nfs ok

mac用脚本定时备份文件到nfs ok

mac用脚本定时备份文件到nfs

1. 包含内容

  1. rsync同步文件
  2. 编写并执行脚本
  3. 检查nfs挂载
  4. 配置crontab

2. rsync同步

同步源/Users/chenchang/searxng/到目的/Volumes/nfs/macdocker/searxng/并保持与源端数据完全一致,包含删除操作

rsync -av --delete --progress /Users/chenchang/searxng/ /Volumes/nfs/macdocker/searxng/
rsync -av --delete --progress /Users/chenchang/newapi/ /Volumes/nfs/macdocker/newapi/

关键点说明:

  1. --delete 的作用:它是实现“镜像同步”的关键。如果没有这个参数,源端删除文件后,目标端会一直保留那些过时的废弃文件。

  2. 路径末尾的斜杠 /

    • 源路径写成 /Users/chenchang/newapi/ (有斜杠):拷贝 newapi 目录下的内容。
    • 如果漏写斜杠:可能会在目标目录下再创建一个 newapi 子目录,变成 /Volumes/nfs/macdocker/newapi/newapi/

3. 编写并执行脚本含检查nfs挂载

创建脚本

cd /Users/chenchang
touch rsync_dockerdata.sh
#创建脚本
chmod a+x rsync_dockerdata.sh
#赋予权限
vim rsync_dockerdata.sh
#vim编辑

脚本内容如下

#!/bin/bash

# --- 自动日志配置 ---
# 自动生成日志
LOG_FILE="/Users/chenchang/rsync_cron.log"
exec > >(tee -a "$LOG_FILE") 2>&1

echo "---------------------------------------"
echo "任务开始时间: $(date)"

# 定义检查函数
# 为了防止 NFS 掉线导致文件错拷进本地磁盘,加入挂载检查
check_mount() {
    # 检查目标文件夹里是否包含某个你确定的文件夹(例如 macdocker)
    # 如果不存在,说明 NFS 没挂载
    if [ ! -d "/Volumes/nfs/macdocker" ]; then
        echo "❌ 错误: NFS 盘未挂载!为了防止占用本地磁盘,已停止任务。"
        exit 1
    fi
}

# --- 执行同步 ---

# 1. 检查挂载状态
check_mount

echo "✅ NFS 已通过检测,开始同步第一个目录: searxng..."
rsync -av --delete --progress /Users/chenchang/searxng/ /Volumes/nfs/macdocker/searxng/

# 2. 等待 5 秒
echo "等待 5 秒..."
sleep 5

# 3. 再次检查挂载状态(防止中间掉线)
check_mount

echo "✅ 开始同步第二个目录: newapi..."
rsync -av --delete --progress /Users/chenchang/newapi/ /Volumes/nfs/macdocker/newapi/

echo "🎉 所有任务完成!"

⚠️ 为什么检查挂载很重要?

  1. 保护系统盘:如果 NFS 掉线,几 GB 甚至几十 GB 的 API 数据会直接塞进你 Mac 的系统盘,可能导致系统卡死。
  2. 避免逻辑混乱:如果你在没挂载时同步了,下次挂载 NFS 后,你会发现 NFS 里的内容还是旧的,而你本地却多了一堆占空间的文件。

4.执行脚本测试

cd /Users/chenchang
./rsync_dockerdata.sh

5. 配置crontab实现定时任务

编辑定时任务

crontab -e

填入以下内容

0 0 */7 * * /bin/bash /Users/chenchang/rsync_dockerdata.sh

查看当前任务

crontab -l

6.查看日志

cat /Users/chenchang/rsync_cron.log
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容