阅读rsync文档
This commit is contained in:
76
linux/rsync.md
Normal file
76
linux/rsync.md
Normal file
@@ -0,0 +1,76 @@
|
||||
# Rsync
|
||||
Rsync是一个灵活的网络同步工具。其可以用于在多台unix机器间增量同步文件,也可以用于系统备份。
|
||||
## Syntax
|
||||
### 在本地进行文件同步
|
||||
当想要在本地目录之间进行文件同步时,可以调用如下形式的命令:
|
||||
```shell
|
||||
rsync -r dir1/ dir2
|
||||
```
|
||||
|
||||
`-r`选项代表递归的对dir目录下的文件进行备份,当需要对目录进行同步时,该选项是必须的。
|
||||
|
||||
除了指定`-r`选项外,还可以指定`--archive | -a`选项,该选项是一个组合选项,archive mode代表`-rlptgoD`。指定`-a`选项后,该选项会递归的同步文件,并且保存符号链接、device文件、文件mtime、group信息、owner信息、权限信息。该选项比`-r`选项使用的更频繁,并且是推荐使用的选项。使用示例如下:
|
||||
```shell
|
||||
# 第一个目录参数中指定了`/`符号,如果没有指定该符号,那么dir目录本身
|
||||
# 也会被放到dir2中,同步后dir2中文件结构则是dir2/dir1/[files]
|
||||
rsync -a dir1/ dir2
|
||||
```
|
||||
|
||||
另外,在使用rsync时,可以指定`-n`或是`--dry-run`选项,指定该选项后,执行命令时并不会实际执行修改操作,该选项只是执行一个trail run,通常和`-v`选项一起使用,查看实际执行时会造成那些修改。使用示例如下:
|
||||
```shell
|
||||
rsync -anv dir1/ dir2
|
||||
```
|
||||
### 同步到远程服务器
|
||||
如果要通过rsync向远程服务器同步数据,只需要拥有远程服务器的ssh访问权限即可,同时需要本地和远程都安装有rsync。
|
||||
|
||||
当向远程服务器同步文件时,其语法如下:
|
||||
```shell
|
||||
rsync -a ~/dir1 username@remote_host:destination_directory
|
||||
```
|
||||
上述命令为push模式,其主动将本地文件同步到远程目录中。
|
||||
|
||||
还可以使用pull模式从远程服务器中同步文件到本地,其命令如下:
|
||||
```shell
|
||||
rsync -a username@remote_host:/home/username/dir1 place_to_sync_on_local_machine
|
||||
```
|
||||
|
||||
### 使用Rsync的其他选项
|
||||
#### `-z`
|
||||
如果在通过rsync传输文件时,可以通过指定`-z`选项来在传输文件时添加对文件的压缩来减少传输带宽:
|
||||
```shell
|
||||
rsync -az source destination
|
||||
```
|
||||
#### `--partial`
|
||||
默认情况下,当传输被中断时,rsync会删除只传输了部分的文件。当指定了`--partial`选项时,rsync会对部分传输的文件进行保留,下次传输时就只用传输缺失的部分,能够减少下次传输时间。
|
||||
|
||||
#### `-P`
|
||||
`-P`选项组合了`--progress`和`--partial`两个选项。第一个选项提供了一个传输文件的进度条,而第二个选项则是允许对中断的传输进行恢复操作。
|
||||
```shell
|
||||
rsync -azP source destination
|
||||
```
|
||||
#### `--delete`
|
||||
默认情况下,rsync在同步文件时,如果source目录中移除了某文件,同步文件后target目录中该文件并不会被同步移除。通过指定`--delete`选项,可以同步移除target目录中的文件。
|
||||
|
||||
#### `--exclude`
|
||||
如果在同步文件时,想要抛出source目录内某些目录或是文件,可以在`--exclude`中指定排除的pattern。在想要排除多个路径时,既可以指定多个`--exclude`选项,也可以在一个`--exclude`选项中指定多个模式,多个pattern之间通过`,`分割,首尾符号为`{`和`}`:
|
||||
```shell
|
||||
rsync -aPznv --delete --exclude={"fiels0","fiels1"} dir1/ dir2
|
||||
```
|
||||
#### `--include`
|
||||
可以使用`--include`来覆盖`--exclude`的排除操作,示例如下:
|
||||
```shell
|
||||
rsync -a --exclude=pattern_to_exclude --include=pattern_to_include source destination
|
||||
```
|
||||
#### `--backup`
|
||||
rsync的`--backup`选项可以用于存储文件的备份。该选项和`--backup-dir`选项联合使用,用于指定备份文件的存储路径。
|
||||
|
||||
--backup选项会将文件备份在target根路径下`backup-dir`路径指定的位置。并且,只有本次rsync操作增量同步的文件才会存储在`backup-dir`中。
|
||||
|
||||
```shell
|
||||
rsync -a --delete --backup --backup-dir=/path/to/backups /path/to/source destination
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user