rsync
Rsync (Remote sync) 是一个文件同步工具,可以用于同步以下文件:
与 cp
和 scp
等文件全量复制工具不同的是,Rsync 可以实现增量同步,即只同步文件的修改部分,而不是复制整个文件。所以 Rsync 适合用于文件数量多、文件体积大的场景。
默认情况下,Rsync 只会同步文件大小修改或最后修改时间修改的文件。如果需要同步内容修改的文件,需要使用 --checksum
选项。
示例:一个增强版的 cp
下面示例是用于将本地 docs/markdown-pages/
目录及其子目录 (--include='*/'
) 中的 TOC.md
、_index.md
和 _docHome.md
文件同步到本地 docs-scaffold/markdown-pages/
目录中 (--include='TOC.md' --include='_index.md' --include='_docHome.md' --exclude='*'
)。同时保证 docs-scaffold/markdown-pages/
中只有这三个文件 (--delete
)。
SRC="docs/markdown-pages/"
DEST="docs-scaffold/markdown-pages/"
rsync -av --delete --checksum --include='*/' --include='TOC.md' --include='_index.md' --include='_docHome.md' --exclude='*' "$SRC" "$DEST"
与 cp "$SRC" "$DEST"
不同的是,上面的 rsync
命令可以实现更细粒度的文件同步,例如只同步指定的文件、保持目标目录中只有指定的文件等。当 docs-scaffold
目录存在但是 markdown-pages
目录不存在时,cp
命令会报错,而 rsync
命令会自动创建 markdown-pages
目录。
提示
在下面命令中,如果 docs-scaffold/markdown-pages
目录不存在,rsync
会报错。
rsync docs/markdown-pages/ docs-scaffold/markdown-pages/test/