为了数据安全,我们经常需要备份文件,需要保持源文件夹与备份文件夹同步,在 macOS 下我们可以使用系统自带的 CLI 工具 rsync 进行文件同步。

rsync

rsync 是 Unix 下的一款 应用软件,它能同步更新两处计算机的档案与目录,並適当利用差分编码以减少数据传输量。rsync 中的一项同类软件不常见的重要特性是每个目標的镜像只需传送一次。rsync 可以拷贝/显示目录內容,以及拷贝档案,並可选压缩以及递归拷贝。—— 维基百科

macOS 系统自带的 rsync 版本较老,version 2.6.9,2006 年发布的版本了,十几年未更新了,我们可以使用 Homebrew 更新到最新版本,version 3.2.3。

1
brew install rsync

下面是我一个简单的备份博客的脚本。

1
2
3
4
5
6
7
8
9
#!/bin/bash

SOURCE_FOLDER="$HOME/Develop/Kilig/KiligWYu.com/"
DESTINATION_FOLDER="$HOME/OneDrive/Backups/Kilig/KiligWYu.com"
EXCLUDE_FOLDER_1="node_modules"
EXCLUDE_FOLDER_2=".deploy_git"

mkdir -p "$DESTINATION_FOLDER"
rsync -avu --delete --exclude="$EXCLUDE_FOLDER_1" --exclude="$EXCLUDE_FOLDER_2" "$SOURCE_FOLDER" "$DESTINATION_FOLDER"
  • -a 等价于 -rlptgoD,保留所有文件系统属性
  • -v 显示详细信息,显示同步的每一个文件,默认静默运行
  • -u 仅复制修改时间较新的文件(如果时间相等,则复制大小不同的文件)
  • --delete 删除目标文件夹中源文件中不存在的文件
  • --exclude=PATTERN 忽略文件(夹)
  • 另外需要注意的是源文件夹末尾的 /,带 / 表示拷贝源文件夹下的内容,不带 / 表示拷贝源文件夹

rsync 功能强大,可选参数非常多,man rsync 可查看其详细说明。

链接