【rsync+ssh】rsync远程同步备份数据

rsync连接远程主机进行同步或备份时有两种途径:

1.使用远程shell程序(如ssh或rsh)进行连接

2.使用TCP直接连接rsync daemon


rsync daemon是"rsync --daemon"或再加上其他一些选项启动的,它会读取配置文件,默认是/etc/rsyncd.conf,并默认监听在873端口上,当外界有客户端对此端口发起连接请求,通过这个网络套接字就可以完成连接,以后与该客户端通信的所有数据都通过该网络套接字传输。

rsync daemon的通信方式和传输通道与远程shell不同。

远程shell连接的两端是通过管道完成通信和数据传输的,即使连接的一端是远程主机,当连接到目标端时,将在目标端上根据远程shell进程fork出rsync进程使其成为rsync server。

rsync daemon是事先在server端上运行好的rsync后台进程(根据启动选项,也可以设置为非后台进程),它监听套接字等待client端的连接,连接建立后所有通信方式都是通过套接字完成的。

注意:rsync中的server的概念从来就不代表是rsync daemon,server在rsync中只是一种通用称呼,只要不是发起rsync请求的client端,就是server端,你可以认为rsync daemon是一种特殊的server,其实daemon更应该称之为service。

 

当源路径或目的路径的主机名后面包含一个冒号分隔符时,rsync使用远程shell传输;

当源路径或目的路径的主机名后面包含两个冒号,或使用rsync://URL时,rsync使用TCP直接连接rsync daemon。

特别的,如果只指定了源路径,而没有指定目的路径,rsync将会显示源路径中的文件列表,类似于使用命令ls -l。

rsync把本地端看作client,把远程端当成server。

rsync有两种常用的认证方式,一种为rsync-daemon方式,另外一种则是ssh。

在一些场合,使用rsync-daemon方式会比较缺乏灵活性,ssh方式则成为首选。

1、从本地同步到远程

# rsync -avz -e  ssh /local/dir/                 [email protected]:/remote/dir

# rsync -avz -e  'ssh  -p 2222' /local/dir/  [email protected]:/remote/dir

两种方式的区别就是远程的ssh默认端口换了

2、从远程同步到本地

# rsync -avzP -e ssh            [email protected]:/remote/dir/    /local/dir

# rsync -avzP -e 'ssh -p 2222'  [email protected]:/remote/dir/    /local/dir

3. 从目的目录中删除不必要的文件(在server端没有的文件)

# rsync -avzP  --delete  -e ssh            [email protected]:/remote/dir/    /local/dir

# rsync -avzP  --delete  -e 'ssh -p 2222'  [email protected]:/remote/dir/    /local/dir

注意: 

源路径的最后是否有斜杠有不同的含义:

有斜杠,只是复制目录中的文件;没有斜杠的话,不但要复制目录中的文件,还要复制目录本身!

目的路径的最后有没有斜杠,对传输没有影响!



rsync参数

http://einverne.github.io/post/2017/07/rsync-introduction.html

rsync基本命令和用法

https://www.cnblogs.com/f-ck-need-u/p/7220009.html

How to Securely Transfer Files via rsync and SSH on Linux

https://www.liquidweb.com/kb/how-to-securely-transfer-files-via-rsync-and-ssh-on-linux

How To Copy Files With Rsync Over SSH

https://www.digitalocean.com/community/tutorials/how-to-copy-files-with-rsync-over-ssh

你可能感兴趣的:(【rsync+ssh】rsync远程同步备份数据)