Centos 远程同步文件和远程执行命令

1. 前言

我们在 Linux 下经常会有拷贝文件和重命名文件的需求,在本机的话可以用 cp 命令去拷贝文件,mv 命令重命名文件,但是这些命令在面对需要在不同主机间传输文件时有点无可奈何了,今天文章的主题就是如果远程传输文件。

常见场景有远程部署项目,传输工具,传输集群文件等等。

2. SCP

scp是 secure copy 的简写,用于在 Linux下进行远程拷贝文件的命令,和它类似的命令有 cp,不过cp 只是在本机进行拷贝不能跨服务器,而且 scp 传输是加密的。当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来

一般 centos 都自带这个命令

2.1 命令

1
scp [参数] [原路径] [目标路径]

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
scp apache-skywalking-apm-es7-8.7.0.tar.gz root@192.168.56.102:~

image-20220225221724648

将 apache-skywalking-apm-es7-8.7.0.tar.gz 从 192.168.56.101 传输到 192.168.56.102 的 家目录下

root 是用户,主机冒号后接目录,这里还需要输入用户密码验证

2.2.2 远程>>远程

1
scp -r root@192.168.56.101:~/apache-skywalking-apm-bin-es7 apache-skywalking

image-20220225223825368

-r 递归复制,从 192.168.56.102 拉取 apache-skywalking-apm-bin-es7 目录到 当前目录下并且重命名为 apache-skywalking

2.2.3 使用 SSH 密钥文件验证身份

1
ssh-keygen

image-20220225230222291

image-20220225230704319

生成密钥文件,文件默认生成在家目录下的 .ssh目录下,一个公钥一个私钥,我们复制一下公钥

image-20220225230952738

然后在另一台主机的 .ssh 目录下创建 authorized_keys 文件,写入公钥

再次传输文件

image-20220225231822649

可以发现不需要再输入密码了,此时我们就是使用了 ssh 来验证我们的身份

ps:我们还可以使用 ssh 来进行远程命令操作

1
ssh root@192.168.56.102 rm -rf ~/apache-skywalking-apm-es7-8.7.0.tar.gz

image-20220225232224168

3. Rsync

rsync 是一个常用的 Linux 应用程序,用于文件同步。和 scp 功能差不多,但是也有一些差异

  • rsync只对差异文件做更新(默认规则是文件大小或修改时间有变动),可以做增量或全量备份;而scp只能做全量备份
  • rsync是分块校验+传输,scp是整个文件传输。rsync比scp有优势的地方在于单个大文件的一小部分存在改动时,只需传输改动部分,无需重新传输整个文件。如果传输一个新的文件,理论上rsync没有优势
  • rsync不是加密传输,而scp是加密传输
  • 小文件众多的情况下,rsync会导致硬盘I/O非常高,相比之下 scp 对系统的负荷很小

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!