Linux文件传输工具及命令

我们在运维工作中经常会有很多文件传输的需求,比如要从本地Windows上传输文件到Linux主机上,要从Linux中把文件传输到Windows上,又或者需要把一些文件从Linux主机传输到另一个主机上,本文讲解如何通过简单的命令及几种工具快速地在不同使用场景下进行文件传输。

Linux to Windows

1. lrzsz工具

Linux服务器和window互传文件工具,适合小文件传输,不适合传输大文件,优点: 方便,快捷。缺点:传输大文件较慢。

1.1 安装方法

  • CentOS/Redhat

    yum install lrzsz -y

  • Ubuntu

    apt-get install lrzsz -y

1.2 使用方法

一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地。

rz -b 运行该命令会弹出一个文件选择窗口,从本地选择文件上传到服务器(receive).

sz -b file将选定的文件发送(send)到本地机器.

rz,sz便是Linux/Unix同Windows进行ZModem文件传输的命令行工具。

1.2.1 上传文件,如下图,在这里你可以选择相关文件之后点击add按钮,选择好要上传的文件之后,再点击OK完成文件上传

1.2.2. 下载文件:

[root@k8snode2 ~]# sz -b /etc/passwd
Starting zmodem transfer.  Press Ctrl+C to cancel.
Transferring passwd...
  100%    1011 bytes 1011 bytes/sec 00:00:01       0 Errors
[root@k8snode2 ~]#

现在问题来了,下载的文件在哪里?

这里我们使用的是SecureCRT会话连接工具(Xshell同理),打开会话设置,找到X/Y/Zmodem设置页,这里可以看到文件Download的目录,在资源管理器里打开这个目录,我这里设置的是桌面(点击图中的三点按钮,可以设置路径),就回到桌面,发现下载的文件文件已经静静的躺在桌面了

2. Xshell自带的sftp客户端工具

Xhell也是比较流行的会话管理工具,提供教育版,提供会话管理工具

2.1 点击如下图中的类似文件夹的按钮,打开sftp客户端

这时会单独出现一个会话窗口

可以看到这里出现的是sftp会话窗口,sftp是基于ssh的ftp传输协议,/root表示当前的目录是在Linux主机的root目录

2.2 打开help帮助信息,这里输入help,可以查看可以使用的命令,如下图:

这里我们发现,有两个命令可以完成我们需要的上传、下载需求:

put upload a file from your local machine to the server

get download a file from the server to your local machine

2.3 使用方法

2.3.1 下载:

sftp:/root> get /etc/passwd
Fetching /etc/passwd to passwd
sftp: received 1011 字节 in 0.03 seconds
sftp:/root>

下载好的文件放在哪里了呢?

打开会话属性,找到文件下载路径。

选择文件传输页:

点击下载路径中的打开,就会发现下载的文件就静静的躺在那里了。

2.3.2 上传:

当我们需要上传时,会上传Windows本地的文件到Linux中,这时会面临一个问题,怎么让sftp客户端找到我们要上传的文件呢?

这里可以使用lcd命令,来切换本地目录:

lcd change and/or print local working directory

这里会弹出选择文件夹的界面,如下图:

选择桌面后会提示已切换至桌面,之后就可以把桌面的文件上传到/root目录下了,如下:

sftp:/root> lcd
Local directory is now C:\\Users\\DELL\\Desktop
sftp:/root> put passwd
Uploading passwd to remote:/root/passwd
sftp: sent 1011 字节 in 0.03 seconds
sftp:/root> put passwd
Uploading passwd to remote:/root/passwd

这样我们就把本地Windows桌面的passwd文件,上传到Linux主机中的/root目录了

3. WinSCP/FlashFXP/FileZilla工具

WinSCP是一个Windows环境下使用的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能就是在本地与远程计算机间安全的复制文件。

FlashFXP提供了最简便和快速的途径来通过FTP传输任何文件,提供了一个格外稳定和强大的程序,确保你的工作能够快速和高效地完成。

FileZilla是一个免费开源的软件,分为客户端版本和服务器版本,具备所有的FTP软件功能。可控性、有条理的界面和管理多站点的简化方式使得Filezilla客户端版成为一个方便高效的FTP客户端工具,而FileZilla Server则是一个小巧并且可靠的支持FTP&SFTP的FTP服务器软件。

以上是百度百科对这三款sftp/scp工具的解释

这类工具的特点是,图形化的界面,操作起来更为人性化,只需要输入用户名及密码,就可以完成上传和下载等功能。

3.1 WinSCP工具

WinSCP支持四种文件传输协议,常用SFTP/FTP/SCP,这里我们使用SFTP协议。

3.2 FlashFXP工具

3.3 Filezilla传输工具

小结:目前图形化的传输工具不仅仅局限于以上几个软件,图形工具多种多样,各有各的优点,请大家按需和个人喜好选择工具。

Linux to Linux文件传输

Linux之间通常使用SCP命令行工具,scp是ssh-clients中的命令,理论上,只要有安装ssh客户端命令的Linux主机,都会有scp这个命令,可以发现ssh和scp都是来自同一个rpm包。

[root@k8snode2 ~]# which scp
/usr/bin/scp
[root@k8snode2 ~]# rpm -qf /usr/bin/scp
openssh-clients-7.4p1-21.el7.x86_64
[root@k8snode2 ~]# which ssh
/usr/bin/ssh
[root@k8snode2 ~]# rpm -qf /usr/bin/ssh
openssh-clients-7.4p1-21.el7.x86_64
[root@k8snode2 ~]#

scp常规的使用方式:

scp可以进行简单的远程复制文件的功能。它是一个在各个主机之间进行复制或文件传输的一个命令工具。它使用一种同ssh一样的安全机制来进行文件的传输。

注意:下面定义的远程计算机的主机域名是 192.168.1.104, 上传文件的路径是 /opt/nplus/nplus/static/admin下面的文件;且服务器的账号是 root, 那么密码需要自己输入自己的密码即可。端口默认是22。

  1. 从本地上传文件到远程计算机或服务器的命令如下:
    先进入本地目录下,然后运行如下命令:
    scp my_local_file.zip root@192.168.1.104:/opt/nplus/nplus/static/admin
  2. 从远程主机复制文件到本地主机(下载)的命令如下:(假如远程文件是about.zip)
    先进入本地目录下,然后运行如下命令:
    scp root@192.168.1.104:/opt/nplus/nplus/static/admin/about.zip .

多文件传输

  1. 从本地文件复制多个文件到远程主机(多个文件使用空格分隔开)
    先进入本地目录下,然后运行如下命令:
    scp index.css json.js root@192.168.1.104:/opt/nplus/nplus/static/admin/
  2. 从远程主机复制多个文件到当前目录
    先进入本地目录下,然后运行如下命令:
    scp root@192.168.1.104:/opt/nplus/nplus/static/admin/{index.css,json.js} .

复制整个文件夹(使用r switch 并且指定目录)

  1. 从本地文件复制整个文件夹到远程主机上(文件夹假如是diff)
    先进入本地目录下,然后运行如下命令:
    scp -v -r diff root@192.168.1.104:/opt/nplus/nplus/static/admin/
  2. 从远程主机复制整个文件夹到本地目录下(文件夹假如是diff)
    先进入本地目录下,然后运行如下命令:
    scp -r root@192.168.1.104:/opt/nplus/nplus/static/admin/ .

在两个远程主机之间复制文件

  1. scp也可以把文件从一个远程主机复制到另一个远程主机上。
    如下命令:
    scp -r root@192.168.1.104:/opt/nplus/nplus/static/admin/ root@192.168.1.105:/opt/nplus/nplus/static/admin/

使用压缩来加快传输

  1. 在文件传输的过程中,我们可以使用压缩文件来加快文件传输,我们可以使用 C选项来启用压缩功能,该文件在传输过程中被压缩,
    在目的主机上被解压缩。

如下命令:
    scp -vrC diff root@192.168.1.104:/opt/nplus/nplus/static/admin/

如果Linux远程主机的ssh端口是 60433端口

使用如下命令:

scp -vrC -P22 diff root@192.168.1.104:/opt/nplus/nplus/static/admin/

Q.E.D.