NotePublic/Software/Applications/Rsync/Rsync_命令说明.md

89 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Rsync 命令说明
## 参数说明
```bash
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
-g, --group 保持文件属组信息
-H, --hard-links 保留硬链结
-l, --links 保留软链结,加上这个参数,同步过来的文件会保持之前的软链接属性不变
-o, --owner 保持文件属主信息
-p, --perms 保持文件权限
-r, --recursive 对子目录以递归模式处理。同步目录的时候要加上这个参数
-v, --verbose 详细模式输出
-z, --compress 对备份的文件在传输时进行压缩处理
--bwlimit=KBPS 限制I/O带宽KBytes per second
--delete 删除那些目标目录中有而源目录中没有的多余文件。这个是rsync做增量方式的全备份的最佳选择方案
--delete-after 在同步操作之后做比较,删除那些目标目录中有而源目录中没有的多余文件
--delete-before 接受者在输出之前进行删除操作。即先将目标目录中文件全部删除再将源目录文件拷贝过去。这是rsync保持目标目录跟源目录一致的方案
--delete-during receiver deletes during the transfer
--delete-delay find deletions during, delete after
--delete-excluded 删除目标目录中那些被该选项指定排除的文件
--exclude 指定同步时需要过滤掉的文件或子目录(即不需要同步过去的),后面直接跟不需要同步的单个文件名或子目录(不需要跟路径) ,过滤多个文件或子目录,就使用多个--exclude
--exclude-from 指定同步时需要过滤掉的文件或子目录,后面跟文件(比如/root/exclue.txt),然后将不需要同步的文件和子目录放到/root/exclue.txt下。
--ignore-errors 即使出现IO错误也进行删除忽略错误
--log-format=formAT 指定日志文件格式
--password-file=FILE 从FILE中得到密码
--port=PORT 指定其他的rsync服务端口
--progress 打印同步的过程
--remove-source-files sender removes synchronized files (non-dirs)
--stats 给出某些文件的传输状态
--timeout=TIME 同步过程中IP超时时间单位为秒
--version 打印版本信息
```
## 使用示例
带进度拷贝如下:
```bash
rsync -arlP <src> <dst>
```
带压缩的拷贝:
```bash
rsync -avzzrlP <src> <dst>
```
远程拷贝:
```bash
rsync -avzzrlP <src> <usrname>@<IP>:<path & name>
# 或
rsync -avzzrlP <usrname>@<IP>:<path & name> <dest>
# 或
rsync -avzzrlP -e 'ssh -p <port>' <usrname>@<IP>:<path & name> <dest>
```
排除文件或目录:
```bash
rsync -arzHlgopP <usrname>@<IP>:<path & name> --exclude <pattern1> --exclude <patternN> <dest>
```
注意,在排除文件或目录时,所有符合 pattern 规则的文件/目录都将被排除。例如根目录下和谋子文件夹下均有名为 exec 的文件/文件夹:
```bash
# 排除全部名为 exec 文件和文件夹
rsync -arzHlgopP --exclude exec <src> <dest>
# 只排除 <src>/exec 文件/文件夹
rsync -arzHlgopP --exclude /exec <src> <dest>
# 只排除 <src>/subdir/exec 文件/文件夹
rsync -arzHlgopP --exclude /subdir/exec <src> <dest>
```
同步后删除源文件,相当于移动文件操作(不影响目录):
```bash
rsync -avzzrlP --remove-source-files <src> <dest>
```
保持两个目录完全一致:
```bash
# 注意src/ dest/ 的书写格式必须一致,不能是 src/* dest/、src/ dest/* 或者 src/* dest/* 否则不会执行 delete 操作
rsync -arHlgopP --delete src/ dest/
```