Linux中scp和rsync命令

scp和rsync命令都可以实现服务器与服务器之间的数据拷贝。

一、scp命令

1.定义

Linux scp 命令用于 Linux 之间复制文件和目录。

scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。

scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。

2.基本语法

scp -r 要拷贝的文件路径 目的用户名@目标主机:目的路径[/新名称]

参数

  • -r为递归,复制文件时不需要,复制文件夹时需要。
  • 目的用户名若为普通用户,则需要注意目的路径是否有修改权限,如果没有则会发送失败。
  • 目标主机可以为目标主机的ip地址,如果配了映射关系,也可以使用目标主机名。
  • 若目的路径后没有跟新名称,则会把文件复制到目的路径下,否则会把文件复制到目标路径下并重命名为新名称。

3.使用

(1)把本地文件复制到另一台服务器

例如:在hadoop102上,把hadoop102上/home/nanfeng路径下的文件夹a复制到hadoop103上的/home/nanfeng路径下,并将文件夹名称改为b。
命令scp -r /home/nanfeng/a nanfeng@hadoop103:/home/nanfeng/b
在这里插入图片描述
注意

  • 这里目标主机因为配置了映射关系,所以可以直接使用主机名,否则则需要写明具体ip。
  • 执行命令时需要输入目标用户的密码,如果做了免密操作,则使用此命令无需输入目标用户密码。

(2)从另一台服务器复制文件到本地

例如:在hadoop103上,把hadoop102上/etc下的profile文件复制到hadoop103上的/opt目录下。
命令sudo scp -r nanfeng@hadoop102:/etc/profile /opt
在这里插入图片描述
注意:因为我使用的普通用户,所以对/opt目录没有修改权限,所以需要借助sudo命令。

(3)在本地把一台服务器的文件复制到另一台服务器

例如:在hadoop103上,把hadoop102上/home/nanfeng下的文件夹a复制到hadoop104上的/home/nanfeng路径下。
命令scp -r nanfeng@hadoop102:/home/nanfeng/a nanfeng@hadoop104:/home/nanfeng
在这里插入图片描述

二、rsync命令

1.定义

rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

2.基本语法

rsync -rvl 要拷贝的文件路径 目的用户名@目标主机:目的路径[/新名称]

参数

  • -r为递归,复制文件时不需要,复制文件夹时需要。
  • -v为显示复制过程。
  • -l为拷贝符号连接。
  • 要拷贝的文件路径后不要加/,如果加了发送文件夹过去,又没改名的话会把文件夹里的文件散出来。
  • 目的用户名若为普通用户,则需要注意目的路径是否有修改权限,如果没有则会发送失败。
  • 目标主机可以为目标主机的ip地址,如果配了映射关系,也可以使用目标主机名。
  • 若目的路径后没有跟新名称,则会把文件复制到目的路径下,否则会把文件复制到目标路径下并重命名为新名称。

3.使用

例子:在hadoop102上,把hadoop102上/home/nanfeng路径下的文件夹a复制到hadoop103上的/home/nanfeng路径下,并将文件夹名称改为b。
命令rsync -rvl /home/nanfeng/a nanfeng@hadoop103:/home/nanfeng/b
Linux中scp和rsync命令_第1张图片
P.s.:使用和scp命令差不多,可以参考上面scp命令的使用。

扩展:

上面讲到的是增量同步,也就是说同步时只对增加和修改的文件进行同步,不对删除的文件进行同步。

例如:如果两台服务器上都有一个相同的文件夹,其中一台服务器删除了文件夹中的一个文件,那么同步发送给另一个服务器这个文件夹后,另一个服务器的这个文件夹中被删的那个文件还在,不会被删除。

问题:如何实现删除操作也同步?

解决方法:执行的命令加上--delete参数,即rsync -rvl --delete 要拷贝的文件路径 目的用户名@目标主机:目的路径

三、scp和rsync的区别

scp是相当于复制,黏贴,如果有的话是覆盖,比较耗时间,不智能。

rsync是复制,如果有重复的文件,会直接跳过,而且他自己的算法优化。

scp是把文件全部复制过去,当文件修改后还是把所有文件复制过去,rsync 第一次是把所有文件同步过去,当文件修改后,只把修改的文件同步过去。所以用rsync做文件的复制要比scp的速度快。

你可能感兴趣的:(学习笔记,linux,大数据,hadoop,centos,ssh)