远程数据同步工具
Rsync是一个远程数据同步工具。 它可以进行本地的文件拷贝,也可以通过远程shell或者sync后台进行远程文件的拷贝。Rsync将本地端称为client,远程端称做server。Sync的主要优势在于增量拷贝,通过拷贝远端和本地端文件的不同来减少拷贝的工作量。
Rsync常常被用来做备份和镜像操作,同时我们也可以将Rsync看作是增强版的拷贝命令。
Rsync通过 “quick check” 方式来比较文件的不同,即通过比较文件是否改变了大小,或者是最后修改的时间。
rsync - a fast, versatile, remote (and local) file-copying tool
SYNOPSIS:
- Local: rsync [OPTION…] SRC… [DEST]
- Access via remote shell:
- Pull: rsync [OPTION… ] [USER@]HOST:SRC… DEST
- Push: rsync [OPTION…] SRC… [USER@]OST:DEST
- Access via rsync daemon:
- Pull: rsync [OPTION… ] [USER@]HOST::SRC… [DEST]
- Pull: rsync [OPTION… ] rsync://[USER@]HOST[:PORT]/SRC… [DEST]
- Push: rsync [OPTION…] SRC… [USER@]HOST::DEST
- Push: rsync [OPTION…] SRC… rsync://[USER@]HOST[:PORT]/DEST
如果没有[DEST],那么rsync仅仅是列出当前目录下的文件,即和ls的作用相当。Rsync支持两种远程拷贝的方式,第一种是常规的remote-shell程序,例如ssh、rsh等。第二种是通过TCP来连接一个rsync后台程序。
用法
简单用法
rsync -t *.c foo:src/
这条命令的作用是将本地所有以.c结尾的文件都拷贝到远端的src/文件夹下。如果文件已经在远端存在,那么Rsync 利用 remote-update协议更新文件的不同部分。
rsync -avz f00:src/bar /data/tmp
这条命令将会将远端的src/bar 文件夹拷贝到本地的/data/tmp文件夹下。在本地的/data/tmp下会出现/data/tmp/bar
rsync -avz f00:src/bar/ /data/tmp
在路径之后的“/”表示拷贝该文件夹下的内容,区别于拷贝整个文件,即一下两条命令的行为相同
rsync -avz f00:src/bar/ /data/tmp/bar
rsync -avz f00 :src/bar /data/tmp
高级用法
多文件的拷贝
rsync -av host:file1 :file2 host:file{3,4} /dest/
选项
常用的选项
-v : verbose
-r : copies data recursively (but don’t preserve timestamps and permission while transferring data
-a : archive mode, archive mode allows copying files recursively and it also preserves symbolic links, file permissions, user & group ownerships and timestamps
-z : compress file data
-h : human-readable, output numbers in a human-readable format
–delete: delete files that not in source
其他选项
-v, --verbose:
详细模式输出 只有一个v的情况下,rsync会输出哪些文件被传输,同时在最后输出一个简单的总结。如果是两个-v那么会给出哪些文件被跳过,同时给出更为详细的总结
–size-only: 改变“quick check”的模式,默认只要大小或者时间戳不同的文件都会被传输,这里只传输大小被改变的文件
–modify-window:
通常两个文件的时间戳需要一样才能被当作是相同的,但是有些系统时间的分辨率不同(例如MS Windosw最小为2s),通过这个选项指定容忍的时间差。
-q, --quiet 精简输出模式
-c, --checksum 对文件传输进行校验和比对
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。
-r, --recursive 对子目录以递归模式处理, 但是不保留文件的属性
-R, --relative 使用相对路径信息。
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用–suffix选项来指定不同的备份文件前缀。
–backup-dir 将备份文件(如~filename)存放在在目录下。
-suffix=SUFFIX 定义备份文件前缀。
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件。
-l, --links 保留软链结。
-L, --copy-links 想对待常规文件一样处理软链结。
–copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结。
–safe-links 忽略指向SRC路径目录树以外的链结。
-H, --hard-links 保留硬链结。
-p, --perms 保持文件权限。
-o, --owner 保持文件属主信息。
-g, --group 保持文件属组信息。
-D, --devices 保持设备文件信息。
-t, --times 保持文件时间信息。
-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间。
-n, --dry-run现实哪些文件将被传输。
–delete: 删除发送端不存在的文件