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
在这里插入图片描述
P.s.:使用和scp命令差不多,可以参考上面scp命令的使用。

扩展:

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

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

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

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

三、scp和rsync的区别

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

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

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

禁用scp并改用rsync命令的原因通常是为了获得更好的文件传输性能更多的功能。rsync是一个功能强大的文件传输工具,支持增量传输、压缩、加密等特性。以下是如何使用rsync命令来替代scp的详细介绍: 1. **安装rsync**: 在大多数Linux发行版上,rsync通常已经预装。如果没有,可以使用包管理器进行安装。 ```bash sudo apt-get install rsync # 对于Debian/Ubuntu系统 sudo yum install rsync # 对于CentOS/RHEL系统 ``` 2. **基本用法**: rsync的基本用法与scp类似,但提供了更多的选项。 ```bash rsync -avz /path/to/local/file username@remotehost:/path/to/remote/directory ``` 其中: - `-a`:归档模式,递归传输并保持文件属性。 - `-v`:详细模式,显示传输过程中的详细信息。 - `-z`:压缩文件数据在传输过程中。 3. **增量传输**: rsync支持增量传输,只传输自上次传输以来发生变化的文件。 ```bash rsync -avz /path/to/local/directory/ username@remotehost:/path/to/remote/directory/ ``` 4. **排除文件**: 可以使用`--exclude`选项排除不需要传输的文件或目录。 ```bash rsync -avz --exclude '*.tmp' /path/to/local/directory/ username@remotehost:/path/to/remote/directory/ ``` 5. **使用SSH密钥**: rsync默认使用SSH协议进行传输,因此可以与SSH密钥结合使用以实现无密码登录。 ```bash rsync -avz -e ssh /path/to/local/file username@remotehost:/path/to/remote/directory ``` 6. **镜像同步**: 可以使用`--delete`选项删除目标目录中源目录不存在的文件,实现镜像同步。 ```bash rsync -avz --delete /path/to/local/directory/ username@remotehost:/path/to/remote/directory/ ``` 通过以上步骤,你可以使用rsync命令来替代scp,实现更高效、更灵活的文件传输。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值