rsync工具介绍、常用选项、通过ssh同步

简介:

rsync 工具介绍

rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。

  • 安装rsync:yum install -y rsync

rsync 六种不同的模式

命令格式 工作模式
rsync[OPTION]... SRC DEST 同步本地文件。当SRC和DES路径信息都不包含有单个冒号“:”分隔符时就启动这工作模式。
rsync[OPTION]... SRC [USER@]HOST:DEST 将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号“:”分隔符时启动该模式。
rsync[OPTION]... [USER@]HOST:SRC DEST 将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号“:”分隔符时启动该模式。
rsync[OPTION]... [USER@]HOST::SRC DEST] 使用一个远程shell程序(如ssh、rsh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含两个冒号“:”分隔符时启动该模式。
rsync[OPTION]... SRC [USER@]HOST::DEST 使用一个远程shell程序(如ssh、rsh)来实现将本地机器的内容拷贝到远程机器。当DEST地址路径包含两个冒号“:”分隔符时启动该模式。
rsync[OPTION]... rsync://[USER@]HOST[:PORT]/SRC[DEST] 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。

注意: src表示源文件,dest表示目的文件

rsync 常用选项

rsync 常用选项

  • -a 包含rtplgoD
    • -r:同步目录时加上表示对子目录进行递归处理
    • -t:保持文件的时间属性
    • -p(小写):保持文件的权限属性
    • -l:保留软链接
    • -g:保存文件数组
    • -o:保持文件的属组
    • -D:保存设备文件信息
  • -v:可视化(visual)
  • -L:同步软链接的同时同步其源文件
  • -P(大写):显示同步过程,比v更详细
  • -u:update,加上该选项,如果DEST中文件比SRC中的新,则不同步
  • -z:gzip,传输时压缩
  • --delete:删除DEST中SRC没有的文件
  • --exclude:过滤指定文件,如--exclude “logs”会把文件名包含logs的文件或者目录过滤掉,不同步

rsync 常用选项的应用

  • 同步本地机器上的文件

    [root@localhost ~]# rsync -av /root/abc/ /tmp/abc_dest/
    sending incremental file list
    created directory /tmp/abc_dest
    ./
    1.txt
    1.tx~
    test123.txt -> /root/test/test
    a/
    sent 200 bytes received 60 bytes 520.00 bytes/sec
    total size is 15 speedup is 0.06
    [root@localhost ~]# ls -l /tmp/abc_dest/
    总用量 0
    -rw-r--r--. 1 root root 0 12月 5 15:00 1.tx~
    -rw-r--r--. 1 root root 0 12月 5 15:00 1.txt
    drwxr-xr-x. 2 root root 6 12月 5 14:59 a
    lrwxrwxrwx. 1 root root 15 12月 5 15:04 test123.txt -> /root/test/test
    [root@localhost ~]# rsync -avL /root/abc/ /tmp/abc_dest
    sending incremental file list
    test123.txt
    sent 1287 bytes received 32 bytes 2638.00 bytes/sec
    total size is 1151 speedup is 0.87
    [root@localhost ~]# ls -l /tmp/abc_dest/
    总用量 4
    -rw-r--r--. 1 root root 0 12月 5 15:00 1.tx~
    -rw-r--r--. 1 root root 0 12月 5 15:00 1.txt
    drwxr-xr-x. 2 root root 6 12月 5 14:59 a
    -rw-r--r--. 1 root root 1151 11月 25 11:04 test123.txt

没加-L参数时候,同步数据时会把软链接同步过来,加了-L参数后,同步数据时把软链接文件对应的源文件同步过来。

  • --delete 删除DEST中SRC没有的文件

    [root@localhost ~]# ls abc/
    1.tx~ 1.txt a test123.txt
    [root@localhost ~]# ls /tmp/abc_dest/
    1.tx~ 1.txt a new.txt test123.txt
    [root@localhost ~]# rsync -avL --delete /root/abc/ /tmp/abc_dest/
    sending incremental file list
    ./
    deleting new.txt
    sent 96 bytes received 16 bytes 224.00 bytes/sec
    total size is 1151 speedup is 10.28
    [root@localhost ~]# ls /tmp/abc_dest/
    1.tx~ 1.txt a test123.txt

    --delete可以比较源文件和目标文件,当目标文件比源文件多某个文件时,使用--delete参数可以将目标文件中多出来的文件删除。如果不加--delete参数,只会同步源文件中的文件,目标文件中多余的文件不会动。

  • --exclude 过滤指定文件

    [root@localhost ~]# rsync -av --exclude "*.txt" /root/abc/ /tmp/abc_dest/
    sending incremental file list
    ./
    1.tx~
    a/
    sent 107 bytes received 38 bytes 290.00 bytes/sec
    total size is 0 speedup is 0.00
    [root@localhost ~]# ls /tmp/abc_dest/
    1.tx~ a
    [root@localhost ~]# ls abc/
    1.tx~ 1.txt 2.txt a test123.txt

    --exclude "*.txt" 同步时,不同步以.txt结尾的文件。如果需要过滤多个条件,则需要用多个--exclude。

  • -P(大写)显示同步过程,比v更详细。

    [root@localhost ~]# rsync -avP /root/abc/ /tmp/abc_dest/
    sending incremental file list
    ./
    1.txt
    0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=4/6)
    1.tx~
    0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=3/6)
    2.txt
    7 100% 0.00kB/s 0:00:00 (xfer#3, to-check=2/6)
    test123.txt -> /root/test/test
    a/

    sent 268 bytes received 79 bytes 694.00 bytes/sec
    total size is 22 speedup is 0.06

    使用大写p参数,可以显示同步传输的速度、和进度。传输大文件时很实用。

  • -u:update

    [root@localhost ~]# cat /root/abc/123 
    test 20171201
    [root@localhost ~]# cat /tmp/abc_dest/123 
    test 20171205
    test 20171205
    [root@localhost ~]# rsync -avu /root/abc/ /tmp/abc_dest/
    sending incremental file list
    ./
    sent 146 bytes received 16 bytes 324.00 bytes/sec
    total size is 36 speedup is 0.22
    [root@localhost ~]# cat /tmp/abc_dest/123 
    test 20171205
    test 20171205
    [root@localhost ~]# cat /root/abc/123 
    test 20171201

    加上该选项,如果DEST中文件比SRC中的新,则不同步。

通过ssh同步

通过ssh同步的两台机器需要相互之间可以通信,并且两台都要安装rsync工具。

  • 通过ssh的方式,将一台机器的文件同步到另一台机器。

    [root@localhost ~]# rsync -av /etc/passwd 192.168.159.130:/tmp/2017.txt
    root@192.168.159.130's password: 
    sending incremental file list
    passwd
    sent 1202 bytes received 31 bytes 352.29 bytes/sec
    total size is 1128 speedup is 0.91

    将本地 /etc/passwd 文件同步到远程主机192.168.159.130.

注意: 同步到远程主机上时,如果没选择用户,则当前是那个用户在操作,就那个用户登录远程主机(远程主机上需要有相同的用户)。

[root@localhost ~]# rsync -av 192.168.159.130:/tmp/2017.txt /tmp/201712.txt
root@192.168.159.130's password: 
receiving incremental file list
2017.txt
sent 30 bytes  received 1209 bytes  354.00 bytes/sec
total size is 1128  speedup is 0.91
[root@localhost ~]# ls /tmp
201712.txt

从远程机器192.168.159.130 将文件同步到本地机器。

把文件从本地机器同步到远程机器叫推文件,从远程机器同步到本地机器叫拉文件。

  • 当远程机器的端口不是22端口时,需要使用-e参数

    [root@localhost ~]# rsync -av -e "ssh -p 2200" /etc/passwd 192.168.159.130:/tmp/2017.txt

    -e "ssh -p 2200" 使用2200端口

  • ssh -p 22 192.168.159.130

    ssh 通过22端口远程登录到192.168.159.130 这台机器。


本文转自 豆渣锅 51CTO博客,原文链接:http://blog.51cto.com/754599082/2047680
相关文章
|
10天前
|
Devops 网络安全 Docker
百度搜索:蓝易云【DevOps系列文章之Docker部署web ssh工具sshwifty教程。】
同时,了解DevOps和Docker的基本原理和概念也对你进行部署和管理这样的工具非常有帮助。你可以进一步研究Docker容器化技术和相关的DevOps实践,以更好地理解和应用这些概念。
58 0
|
10天前
|
Shell 网络安全 iOS开发
最好用的SSH工具Royal TSX for mac使用教程
众所周知,在 Windows上我们经常用到的shell工具可能非 xshell莫属了。但是xshell却并没有开发mac 版本,我们只能用其他的工具替代了。 在我用过几个ssh工具之后,我觉得在macOS上最好用的ssh工具客户端必须是 Royal TSX,它和使用xhell的感觉简直一模一样。 Royal TSX是一款功能非常强大适用于 Mac 的远程连接管理工具。兼容多种连接类型,比如:RDP、VNC、基于SSH连接的终端,SFTP/FTP/SCP或基于Web的连接管理,Royal TSX 都可以满足您的要求!
239 0
最好用的SSH工具Royal TSX for mac使用教程
|
10天前
|
Linux 网络安全 数据安全/隐私保护
SSH工具连接远程服务器或者本地Linux系统
SSH工具连接远程服务器或者本地Linux系统
28 0
|
10天前
|
Ubuntu Shell Linux
使用sshpass工具通过SSH执行远程命令
`sshpass`是一个用于在脚本中自动输入SSH密码的工具 **在Debian/Ubuntu上安装sshpass:** ```bash sudo apt-get install sshpass ``` **在CentOS/RHEL上安装sshpass:** ```bash sudo yum install sshpass ``` **在Fedora上安装sshpass:** ```bash sudo dnf install sshpass ``` 安装完成后,你可以使用`sshpass`命令通过SSH执行远程命令。以下是一个示例: ```bash sshpass -p 'yo
|
10天前
|
安全 Unix Linux
基于MobaXterm工具的Linux远程SSH登录
本文介绍了如何使用 MobaXterm 进行 Linux 远程登录。首先,从官方网站下载并安装 MobaXterm。启动后,创建新的远程会话,选择 SSH 类型,输入服务器 IP、主机名和端口。接着,提供用户名和密码进行连接。成功后,即可使用远程终端执行命令。此外,文章还提到了其他常用的 Linux 远程登录工具,如 PuTTY、OpenSSH、SecureCRT 和 Xshell,强调了选择工具时应考虑个人偏好和安全需求。
|
10天前
|
存储 网络协议 Linux
如何使用内网穿透工具实现远程SSH访问Deepin系统
如何使用内网穿透工具实现远程SSH访问Deepin系统
|
10天前
|
安全 网络安全 数据安全/隐私保护
Termius 一款优秀的跨平台 SSH 客户端工具
Termius 一款优秀的跨平台 SSH 客户端工具
109 0
|
10天前
|
Ubuntu Linux 网络安全
MobaXterm的是有用方法---集串口,SSH远程登录和FTP传输三合一工具
MobaXterm的是有用方法---集串口,SSH远程登录和FTP传输三合一工具
89 3
|
10天前
|
存储 网络安全 开发工具
Git的GUI图形化工具&ssh协议&IDEA集成Git
Git的GUI图形化工具&ssh协议&IDEA集成Git
130 0
|
5月前
|
网络安全 Python
动手写个ssh连接工具
动手写个ssh连接工具
66 0