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。
- 从本地上传文件到远程计算机或服务器的命令如下:
先进入本地目录下,然后运行如下命令:
scp my_local_file.zip root@192.168.1.104:/opt/nplus/nplus/static/admin - 从远程主机复制文件到本地主机(下载)的命令如下:(假如远程文件是 about.zip)
先进入本地目录下,然后运行如下命令:
scp root@192.168.1.104:/opt/nplus/nplus/static/admin/about.zip .
多文件传输
- 从本地文件复制多个文件到远程主机(多个文件使用空格分隔开)
先进入本地目录下,然后运行如下命令:
scp index.css json.js root@192.168.1.104:/opt/nplus/nplus/static/admin/ - 从远程主机复制多个文件到当前目录
先进入本地目录下,然后运行如下命令:
scp root@192.168.1.104:/opt/nplus/nplus/static/admin/{index.css,json.js} .
复制整个文件夹(使用 r switch 并且指定目录)
- 从本地文件复制整个文件夹到远程主机上(文件夹假如是 diff)
先进入本地目录下,然后运行如下命令:
scp -v -r diff root@192.168.1.104:/opt/nplus/nplus/static/admin/ - 从远程主机复制整个文件夹到本地目录下(文件夹假如是 diff)
先进入本地目录下,然后运行如下命令:
scp -r root@192.168.1.104:/opt/nplus/nplus/static/admin/ .
在两个远程主机之间复制文件
- scp 也可以把文件从一个远程主机复制到另一个远程主机上。
如下命令:
scp -r root@192.168.1.104:/opt/nplus/nplus/static/admin/ root@192.168.1.105:/opt/nplus/nplus/static/admin/
使用压缩来加快传输
- 在文件传输的过程中,我们可以使用压缩文件来加快文件传输,我们可以使用
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/