rsync
一、什么是rsync
rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。 rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件。
rsync 包括如下的一些特性:
能更新整个目录和树和文件系统;
有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;
对于安装来说,无任何特殊权限要求;
对于多个文件来说,内部流水线减少文件等待的延时;
能用rsh、ssh 或直接端口做为传输入端口;
支持匿名rsync 同步文件,是理想的镜像工具;
SYNOPSIS
Local: rsync [OPTION...] SRC... [DEST]
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
rsync有六种不同的工作模式:
1、拷贝本地文件,当SRC和DEST路径信息都不包含有单个冒号“:”分隔符时就启动这种工作模式。
2、使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DEST路径地址包含单个冒号“:”分隔符时启动该模式。
3、使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当DEST路径地址包含单个冒号“:”分隔符时启动该模式。
4、从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含“::”符时启动文具模式。
5、从本地机器拷贝文件到远程rsync服务器中。当DEST路径信息包含“::”分隔符时启动该模式。
6、列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉梧桐信息即可。
常用的选项:
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
归档 也就-rlptgoD的集合
-r, --recursive recurse into directories
递归目录
-l, --links copy symlinks as symlinks
链接文件,意思是拷贝链接文件;
-z, --compress compress file data during the transfer
传输时压缩
-v, --verbose increase verbosity
传输时的进度信息,和-P差不多,
-e, --rsh=COMMAND specify the remote shell to use
ssh的参数建立起加密的连接
-u, --update skip files that are newer on the receiver
只进行更新,防止本地被重写,这个选项下有很子选项,可以自己去看看
-h, --human-readable output numbers in a human-readable format
--progress show progress during transfer
以人类可读的方式
显示进程在传输的过程
--delete 删除那些DEST中SRC没有的文件
--password-file=FILE //从FILE中得到密码
实际操作:
rsync -avh test/ [email protected]:/opt //本地将test目录下的文件复制给172.16.253.125的/opt目录 下
rsync -avzh /mnt/ya [email protected]:/home/jeep/ //将ya目录复制到/home/jeep下复制的是普通用户,那么复制的位置只能是普通用户能写的位置 ,否则将Permission Denied.
rsync -zvah /test /mnt //将test整个目录复制给/mnt下
rsync -zvah /test/ /mnt //将test下的文件复制给/mnt下
rsync -avz --delete /empty/file/ /have/file/ //这个就将大文件给清空的命令
这只是客户端的简单用法,如果有问题可以去man文档,服务器篇下一次在说。