sydomain

思绪来的快,去的也快,偶尔在这里停留。

rsync用法

## rsync用法

`rsync`是一款同步文件的工具,可以在本地文件夹之间互相同步文件,也可以同步远程服务器文件,既可单向同步,也可双向同步


#### 安装

```
yum install rsync
```


#### 参数

`源路径`:被同步的文件或文件夹路径
`目标路径`:存放`源路径`中发送过来的文件或文件夹
`-v`:查看每次同步文件的过程
`-r`:递归路径内的文件与子文件夹  
`-a`:可以代替`-r`,除了递归之外,还可以同步元信息(比如修改时间、权限等)  
`-n`:模拟执行文件同步,可做测试用,可以看到同步文件后的结果,不会真的同步文件  
`--delete`:同步目录中被删除的文件与文件夹,如果目标目录中包含源目录中不存在的文件与文件夹,会被删除  
`--append`:断点续传  
`--append-verify`:可以代替`--append`,断点续传完毕后,还会对文件做校验,如果校验失败,就重传


#### 场景

本地服务器IP:192.168.1.199  

目标服务器IP:192.168.1.200  

文件列表:

```
/opt/  
/opt/abc.txt  
/opt/www/  
/opt/www/a.txt  
/opt/data/
```


#### 本地同步

每次同步文件,先写源路径,最后一个是目标路径,参数有必要的时候适当的加一下


###### 同步文件

同步文件可以跟`cp`一样,将`/opt/abc.txt`复制一份出来,变一个名字,路径为`/opt/bcd.txt`  

```
rsync /opt/abc.txt /opt/bcd.txt
```


将`/opt/abc.txt`复制到,文件夹`/opt/data`下,目标路径如果是文件夹,结尾可用`/`结尾,也可不用  

```
# 文件夹/opt/data不用 / 结尾
rsync /opt/abc.txt /opt/data
# 文件夹/opt/data用 / 结尾
rsync /opt/abc.txt /opt/data/
```

###### 同步文件夹

源目录末尾不带`/`,是将自身整个同步到目标路径下,带递归,如`-a`与`-r`


将`/opt/www`整个同步到`/opt/data`,同步后`/opt/data`下会有一个文件夹`www`  

```
rsync -a /opt/www /opt/data/
```


源目录末尾带`/`,是将自身目录中的文件与子文件夹整个同步到目标路径下  

```
rsync -a /opt/www/ /opt/data/
```


###### 排除文件

同步文件时有些文件不需要一起同步,可使用参数`--exclude`,`*`为模糊匹配


将`/opt/www/`下的文件全部整个同步到`/opt/data/`下,不要同步扩展名为`.txt`的文件  

```
rsync -a --exclude='*.txt' /opt/www/ /opt/data/
```


如果是被同步的目录中的子文件夹下的某种文件,比如不要同步`/opt/www/abc/`下的`.md`文件  

```
rsync -a --exclude='abc/*.md' /opt/www/ /opt/data/
```


`--exclude`可以写多个,但是如果使用`bash`的方式只能写一个  

```
rsync -a --exclude={'*.txt','abc/*.txt'} /opt/www/ /opt/data/
```


`--exclude`的内容也可以写到配置文件里,每行一个规则  

```
rsync -a --exclude-from='exclude-file.txt' /opt/www/ /opt/data/
```

`exclude-file.txt`内容:

```
*.txt
abc/1.txt
```

###### 包含文件

同步文件时有些文件是必须要同步的,可使用参数`--include`,`*`为模糊匹配,必须搭配`--exclude`来使用


排除所有文件,但是会包括 TXT 文件  

```
rsync -a --include="*.txt" --exclude='*' /opt/www/ /opt/data/
```


#### 远程同步

想把文件同步到远程服务器,如果不是用`rsync`自身的协议,那就是是用`ssh`了


远程同步与本地同步最大区别,除了参数,就是多了目标路径前加上远程服务器的登录账号和IP地址


使用参数`-e`来启用`ssh`方式同步


###### 同步文件夹到远程目录

本地`/opt/www/`下的所有文件与文件夹,同步到远程服务器`/opt/data/`下,服务器IP和目标路径用`:`隔开  

```
rsync -a -e ssh /opt/www/ root@192.168.1.200:/opt.data
```


###### 远程目录同步到本地文件夹

本地可以同步到远程,远程也可以同步到本地


远程服务器`/opt/data/`下的所有文件与文件夹,同步到本地`/opt/www/`下

```
rsync -a -e ssh root@192.168.1.200:/opt.data/ /opt/www
```


###### 远程服务器的SSH使用非默认端口

如果远程服务器的`SSH`不是使用的`22`端口,`-e`后面的参数要用单引号包含,如端口为`2345`  

```
rsync -a -e 'ssh -p 2345' /opt/www/ root@192.168.1.200:/opt.data
```





Powered By sydomain

Copyright Your WebSite.Some Rights Reserved.