syncthing加rsync 实现单向同步到网盘

3 12 月, 2024 39点热度 0人点赞 0条评论

1. 创建同步脚本

首先,创建一个脚本来执行 rsync 操作。假设你将脚本命名为 sync_to_remote.sh

步骤:

  1. 打开终端并编辑脚本:

    nano /home/rontalks/sync_to_remote.sh
  2. 在脚本中添加以下内容:

    #!/bin/bash
    
    # 本地文件夹路径
    LOCAL_DIR=""
    
    # 远程挂载路径
    REMOTE_DIR=""
    
    # 日志文件(可选,记录同步过程)
    LOG_FILE="/home/rontalks/sync_to_remote.log"
    
    echo "Starting sync process..." >> "$LOG_FILE"  # 调试信息
    # 检查目标文件夹是否存在
    if [ ! -d "$REMOTE_DIR" ]; then
       echo "Error: Target directory does not exist." >> "$LOG_FILE"
       exit 1
    fi
    
    # 执行 rsync 同步操作
    echo "Running rsync command..." >> "$LOG_FILE"  # 调试信息
    rsync -av --delete "$LOCAL_DIR/" "$REMOTE_DIR/" >> "$LOG_FILE" 2>&1
    
    echo "Sync complete." >> "$LOG_FILE"  # 调试信息
    
    # 执行 rsync 同步操作
    rsync -av --delete "$LOCAL_DIR/" "$REMOTE_DIR/" >> "$LOG_FILE" 2>&1

    解释:

    • -a:归档模式,保留符号链接、权限、时间戳等。
    • -v:详细输出,同步过程中显示文件信息。
    • --delete:删除目标目录中源目录不存在的文件。
    • "$LOCAL_DIR/""$REMOTE_DIR/":确保同步时包含目录内容。
  3. 保存并关闭编辑器(按 Ctrl + X,然后按 Y,最后按 Enter)。

2. 赋予脚本执行权限

确保脚本具有执行权限:

chmod +x /home/rontalks/sync_to_remote.sh

3. 手动测试同步脚本

在自动化之前,手动运行一次脚本,确保同步过程没有问题:

/home/rontalks/sync_to_remote.sh

检查日志文件 /home/rontalks/sync_to_remote.log,确保同步成功。如果有错误,可以根据日志信息进行排查。

4. 设置定时任务(Cron Job)

要每 5 分钟自动运行脚本,可以使用 cron 设置定时任务:

  1. 打开 crontab 编辑器:

    crontab -e
  2. crontab 文件中添加以下条目,表示每 5 分钟执行一次脚本:

    */5 * * * * /home/rontalks/sync_to_remote.sh

    这行代码的意思是每 5 分钟执行一次 /home/rontalks/sync_to_remote.sh 脚本。

  3. 保存并退出(Ctrl + X,然后按 Y,最后按 Enter)。

5. 检查定时任务是否生效

你可以查看 cron 的日志,确认任务是否按预期执行。日志通常保存在 /var/log/syslog/var/log/cron 中。你可以通过以下命令查看:

grep CRON /var/log/syslog

总结:

  • 你创建了一个 rsync 同步脚本,通过 rsync 将本地 Syncthing 文件夹同步到远程挂载的网盘路径。
  • 你通过 cron 设置了定时任务,每 5 分钟自动运行脚本。

这样,NAS 本地的文件夹将每 5 分钟同步一次到远程网盘。

Ron

这个人很懒,什么都没留下

文章评论