Centos 远程同步文件和远程执行命令
1. 前言
我们在 Linux 下经常会有拷贝文件和重命名文件的需求,在本机的话可以用 cp 命令去拷贝文件,mv 命令重命名文件,但是这些命令在面对需要在不同主机间传输文件时有点无可奈何了,今天文章的主题就是如果远程传输文件。
常见场景有远程部署项目,传输工具,传输集群文件等等。
2. SCP
scp是 secure copy 的简写,用于在 Linux下进行远程拷贝文件的命令,和它类似的命令有 cp,不过cp 只是在本机进行拷贝不能跨服务器,而且 scp 传输是加密的。当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来
一般 centos 都自带这个命令
2.1 命令
1 |
|
options:
- -1 强制scp命令使用协议ssh1
- -2 强制scp命令使用协议ssh2
- -4 强制scp命令只使用IPv4寻址
- -6 强制scp命令只使用IPv6寻址
- -B 使用批处理模式(传输过程中不询问传输口令或短语)
- -C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
- -p 留原文件的修改时间,访问时间和访问权限。
- -q 不显示传输进度条。
- -r 递归复制整个目录。
- -v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
- -c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
- -F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。
- -i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
- -l limit 限定用户所能使用的带宽,以Kbit/s为单位。
- -o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式,
- -P port 注意是大写的P, port是指定数据传输用到的端口号
- -S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
2.2 实践
2.2.1 本地>>远程
1 |
|
将 apache-skywalking-apm-es7-8.7.0.tar.gz 从 192.168.56.101 传输到 192.168.56.102 的 家目录下
root 是用户,主机冒号后接目录,这里还需要输入用户密码验证
2.2.2 远程>>远程
1 |
|
-r 递归复制,从 192.168.56.102 拉取 apache-skywalking-apm-bin-es7 目录到 当前目录下并且重命名为 apache-skywalking
2.2.3 使用 SSH 密钥文件验证身份
1 |
|
生成密钥文件,文件默认生成在家目录下的 .ssh目录下,一个公钥一个私钥,我们复制一下公钥
然后在另一台主机的 .ssh 目录下创建 authorized_keys 文件,写入公钥
再次传输文件
可以发现不需要再输入密码了,此时我们就是使用了 ssh 来验证我们的身份
ps
:我们还可以使用 ssh 来进行远程命令操作
1 |
|
3. Rsync
rsync 是一个常用的 Linux 应用程序,用于文件同步。和 scp 功能差不多,但是也有一些差异
- rsync只对差异文件做更新(默认规则是文件大小或修改时间有变动),可以做增量或全量备份;而scp只能做全量备份
- rsync是分块校验+传输,scp是整个文件传输。rsync比scp有优势的地方在于单个大文件的一小部分存在改动时,只需传输改动部分,无需重新传输整个文件。如果传输一个新的文件,理论上rsync没有优势
- rsync不是加密传输,而scp是加密传输
- 小文件众多的情况下,rsync会导致硬盘I/O非常高,相比之下 scp 对系统的负荷很小
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!