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

简介:

rsync工具介绍
使用场景:A机器传输文件到B机器。或者备份数据到远程机器。本机的A目录到B目录,其中A目录数据不断的增加,每小时备份到B机器。使用cp显然不合适。
•rsync -av /etc/passwd /tmp/1.txt //-a 保含了好几个选项
• rsync格式
本地目录 目标目录
• rsync [OPTION] … SRC DEST
• rsync [OPTION] … SRC [user@]host:DEST
rsync -av /tmp/1.txt root@192.168.188.128:/tmp/2.txt //不写用户就是当前的用户,对方机器没有会报错

• rsync [OPTION] … [user@]host:SRC DEST //远程目录拷贝到本地目录下
• rsync [OPTION] … SRC [user@]host::DEST //::可以是目标也可以是源
• rsync [OPTION] … [user@]host::SRC DEST

•rsync常用选项
• -a 包含-rtplgoD
• -r 同步目录时要加上,类似cp时的-r选项
• -v 同步时显示一些信息,让我们知道同步的过程
• -l 保留软连接
• -L 加上该选项后,同步软链接时会把源文件给同步 
• -p 保持文件的权限属性
• -o 保持文件的属主 //如果对方没有就显示数字
• -g 保持文件的属组
• -D 保持设备文件信息
• -t 保持文件的时间属性
--delete 删除DEST中SRC没有的文件
--exclude 过滤指定文件,如--exclude “logs”
•-P 显示同步过程,比如速率,比-v更加详细
-u (update)加上该选项后,如果DEST中的文件比SRC新,则不同步。
•-z 传输时压缩

rsync常用选项(下)
测试:
rsync -av /root/lsx/ /tmp/lsx_dest/ //不加L的情况。同步目录后面加/。加/表示把目录的内容同步过来。不加/就是把目录和内容一起同步过来。
ll /tmp/lsx_dest/
lrwxrwxrwx 1 root root 12 11月 30 23:53 123.txt -> /tmp/123.txt
lrwxrwxrwx 1 root root 11 11月 30 23:44 12.txt -> /tmp/12.txt
[root@localhost ~]# rsync -avL /root/lsx/ /tmp/lsx_dest/ //加L的就相当于没有小l。会把源文件内容拷贝过去
ll /tmp/lsx_dest/
-rw-r--r-- 1 root root 9 11月 30 23:52 123.txt

2.--delete
ll /tmp/lsx_dest/
lrwxrwxrwx 1 root root 12 11月 30 23:53 123.txt -> /tmp/123.txt
-rw-r--r-- 1 root root 6 11月 30 23:39 1.txt
-rw-r--r-- 1 root root 0 12月 1 00:11 new.txt
[root@localhost ~]# rsync -av --delete /root/lsx/ /tmp/lsx_dest/ //加--delete把目标文件中src没有的文件删除(如果是做镜像备份就需要加)

sending incremental file list
deleting new.txt

[root@localhost ~]# ll /tmp/lsx_dest/
总用量 8
lrwxrwxrwx 1 root root 12 11月 30 23:53 123.txt -> /tmp/123.txt
-rw-r--r-- 1 root root 6 11月 30 23:39 1.txt
3.-u
cat /tmp/lsx_dest/1.txt 
dadad
jia123
cat /root/lsx/1.txt 
dadad
rsync -av /root/lsx/ /tmp/lsx_dest/ //不加u的情况
sending incremental file list
./
1.txt
cat /tmp/lsx_dest/1.txt 
dadad

cat /tmp/lsx_dest/1.txt 
dadad
123
rsync -avu /root/lsx/ /tmp/lsx_dest/ //加u的情况
sending incremental file list
./
cat /tmp/lsx_dest/1.txt 
dadad
123

4.--exclude
rsync -av --exclude ".txt" /root/lsx/ /tmp/lsx_dest/ //--exclude过滤txt文件。支持连续多个格式 --exclude ".txt" --exclude "."
sending incremental file list
./
passwd

ls /tmp/lsx_dest/
passwd
ls /root/lsx/
123.txt 12.txt 1.txt passwd

5.-P
rsync -avP --exclude "*.txt" /root/lsx/ /tmp/lsx_dest/ //-P可以看到传输过程几兆每秒(是否卡死)
sending incremental file list
./
passwd
883 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/2)

sent 974 bytes received 34 bytes 2016.00 bytes/sec
total size is 883 speedup is 0.88

通过ssh同步
A机器到B机器。
rsync通过ssh方式同步
rsync -av test1/ 192.168.133.132:/tmp/test2/ //把test1目录同步到另外一台机器
rsync /etc/passwd 192.168.211.149:/root/ //推文件。拉
The authenticity of host '192.168.211.149 (192.168.211.149)' can't be established.
ECDSA key fingerprint is 0f:bd:8f:21:d3:48:a7:6c:f0:ae:00:b4:56:9e:c7:da.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.211.149' (ECDSA) to the list of known hosts.
root@192.168.211.149's password: 
bash: rsync: 未找到命令
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: remote command not found (code 127) at io.c(605) [sender=3.0.9]
原因是机器默认是没有rsync命令的。所以要在另外一台机器安装rsync

rsync -avz 192.168.211.149:/root/passwd /tmp/passwd //拉文件

!!如果对方端口不是22
rsync -avz -e "ssh -p 22" 192.168.211.149:/root/passwd /tmp/passwd
root@192.168.211.149's password: 
receiving incremental file list

sent 11 bytes received 36 bytes 18.80 bytes/sec
total size is 883 speedup is 18.79

ssh -p 22 192.168.211.149 //这种方式可以直接登录到对方机器



本文转自 虾米的春天 51CTO博客,原文链接:http://blog.51cto.com/lsxme/2047434,如需转载请自行联系原作者

相关文章
|
3月前
|
监控 Linux Shell
Rsync 基于 SSH 同步
Rsync 实时同步配置
105 3
|
4月前
|
安全 Linux 网络安全
在Linux中,使用rsync同步数据时,假如采用的是ssh方式,并且目标机器的sshd端端并不是默认的22端口,该如何做?
在Linux中,使用rsync同步数据时,假如采用的是ssh方式,并且目标机器的sshd端端并不是默认的22端口,该如何做?
|
存储 缓存 网络安全
OpenLDAP集成sssd同步用户并集成SSH登录
OpenLDAP集成sssd同步用户并集成SSH登录
490 2
|
网络安全
05-rsync与ssh访问流程区别
ssh访问流程 1.首先使用ssh root@172.16.1.41:/backup去请求172.16.1.41服务器的backup目录 2.当请求到达1.41服务器时,去判断/etc/passwd文件是否有root这个用户,如果存在则根据root用户的权限去访问对应的/backup目录 rsync访问流程 1.首先使用rsync -avz rsync_backup@172.16.1.41::backup去请求1.41服务器的backup模块 2.请求到达服务器时,服务器会判断/etc/rsync.password文件验证rsync_backup用户是否存在,如果存在就将虚拟用于程序
155 0
05-rsync与ssh访问流程区别
|
网络安全
04-rsync传输与ssh传输的区别
rsync传输与ssh传输的区别
177 0
04-rsync传输与ssh传输的区别
|
网络安全 数据安全/隐私保护 Shell
多SSH KEY切换部署同步代码
一般情况下,我们会单独生成一个ssh-key公钥用于备份数据,而不是和其他公钥混合使用,避免因为因为某些操作不安全,造成代码丢失。当然你也可以选择一个其他账户操作也是可以的,但如果选择其他账户了,也就没有这篇文章的存在了。还是回到多个私钥的问题上,默认情况下,RSA算法的 ssh 私钥文件名为 id_rsa,我们可以通过ssh-keygen生成 ssh key 的时候可以指定其名称。 当有多个SSH KEY存在的时候,如何指定某个ssh读取某个私钥呢?本文就提供一个解决方案。
834 0
多SSH KEY切换部署同步代码
|
1月前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
6月前
|
安全 Linux Shell
Linux中SSH命令介绍
Linux中SSH命令介绍
166 2
|
4月前
|
监控 安全 Ubuntu
在Linux中,如何进行SSH服务配置?
在Linux中,如何进行SSH服务配置?