102 lines
3.2 KiB
Markdown
102 lines
3.2 KiB
Markdown
---
|
||
title: "rsync 命令"
|
||
date: 2019-10-29T21:21:14+08:00
|
||
lastmod: 2019-10-29T21:21:14+08:00
|
||
keywords: []
|
||
tags: ["rsync", "同步"]
|
||
categories: ["shell"]
|
||
---
|
||
|
||
## 简介
|
||
- rsync(Remote Sync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
|
||
- 支持:
|
||
- 本地复制
|
||
- 与其他SSH同步
|
||
- 与rsync主机同步
|
||
|
||
## rsyncd 源服务
|
||
- 创建 rsync 配置文件 /etc/rsyncd.conf,内容如下
|
||
```ini
|
||
# 限制客户端登陆身份为 nobody:nobody
|
||
uid = nobody
|
||
gid = nobody
|
||
# 禁锢在源目录下
|
||
use chroot = yes
|
||
# 指定监听端口,默认监听 tcp 873 端口
|
||
port = 873
|
||
# 指定监听地址,默认监听全部网卡
|
||
address = 192.168.1.101
|
||
# 允许访问的客户端地址
|
||
hosts allow = 192.168.1.0/24
|
||
max connections = 4
|
||
# 日志位置
|
||
log file = /var/log/rsyncd.log
|
||
# PID 文件位置
|
||
pid file = /var/run/rsyncd.pid
|
||
exclude = lost+found/
|
||
transfer logging = yes
|
||
timeout = 900
|
||
ignore nonreadable = yes
|
||
# 同步时不压缩的文件类型
|
||
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
|
||
# 账户文件,每行格式 user:password,权限 600
|
||
secrets file = /etc/rsyncd_users.db
|
||
|
||
[data1]
|
||
# 源目录实际路径,注意该目录需要对 nobody 用户可读
|
||
path = /path/to/data1
|
||
# 描述
|
||
comment = sth about dir data1
|
||
# 只读
|
||
read only = yes
|
||
# 授权账户
|
||
auth users = backuper
|
||
```
|
||
- 创建备份帐号信息
|
||
```bash
|
||
echo 'backuper:123456' > /etc/rsyncd_users.db
|
||
chmod 0600 /etc/rsyncd_users.db
|
||
```
|
||
- 启动 rsyncd 服务
|
||
```bash
|
||
systemctl start rsyncd
|
||
```
|
||
|
||
## rsync 命令选项
|
||
- -r: 递归模式,包含目录及子目录中所有文件
|
||
- -l: 对于符号链接文件仍然复制为符号链接文件
|
||
- -p: 保留文件的权限标记
|
||
- -t: 保留文件的时间标记
|
||
- -g: 保留文件的属组标记(仅超级用户使用)
|
||
- -o: 保留文件的属主标记(仅超级用户使用)
|
||
- -D: 保留设备文件及其他特殊文件
|
||
- -a: 归档模式,递归并保留对象属性,等同于 -rlptgoD
|
||
- -v: 显示同步过程的详细(verbose)信息
|
||
- -z: 在传输文件时进行压缩(compress)
|
||
- -H: 保留硬连接文件
|
||
- -A: 保留ACL属性信息
|
||
- --delete: 删除目标位置有而原始位置没有的文件
|
||
- --checksum: 根据对象的校验和来决定是否跳过文件
|
||
- --password-file: 指定包含密码的文件
|
||
|
||
## 简单使用
|
||
- 本地复制,类似 cp 命令
|
||
```bash
|
||
rsync -a /etc/passwd 123.txt
|
||
```
|
||
- 与其他 ssh 同步
|
||
```bash
|
||
rsync -av root@192.168.1.100:/root/123.txt .
|
||
```
|
||
- 与 rsync 主机同步
|
||
```bash
|
||
rsync -avz backuper@192.168.1.100::data1 /root
|
||
# 或者
|
||
rsync -avz rsync://backuper@192.168.1.100/data1 /root
|
||
```
|
||
- 向同步源服务上传文件时,直接调换源参数和目的参数,注意客户端可写上传目录
|
||
|
||
## 参考
|
||
- [https://www.linuxidc.com/Linux/2019-08/160108.htm](https://www.linuxidc.com/Linux/2019-08/160108.htm)
|
||
|