Linux 上传下载文件的几种方式

1、scp

【优点】简单方便,安全可靠;支持限速参数

【缺点】不支持排除目录

【用法】

scp就是secure copy,是用来进行远程文件拷贝的。数据传输使用 ssh,并且和ssh 使用相同的认证方式,提供相同的安全保证 。 

命令格式:

scp [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径>

举例:

scp /home/work/source.txt work@192.168.0.10:/home/work/   #把本地的source.txt文件拷贝到192.168.0.10机器上的/home/work目录下

scp work@192.168.0.10:/home/work/source.txt /home/work/   #把192.168.0.10机器上的source.txt文件拷贝到本地的/home/work目录下

scp work@192.168.0.10:/home/work/source.txt work@192.168.0.11:/home/work/   #把192.168.0.10机器上的source.txt文件拷贝到192.168.0.11机器的/home/work目录下

scp -r /home/work/sourcedir work@192.168.0.10:/home/work/   #拷贝文件夹,加-r参数 

scp -r /home/work/sourcedir work@www.myhost.com:/home/work/   #使用主机名 

scp -r -v /home/work/sourcedir work@www.myhost.com:/home/work/   #显示详情,加-v参数 

 

2、rcp

目标主机需要事先打开rcp功能,并设置好rcp的权限

把源主机加入到可信任主机列表中,否则无法在源主机上使用rcp远程复制文件到目标主机。 

 

3、wget

【优点】简单方便,支持排除目录,支持限速参数

【缺点】只能从远程机器将文件或文件夹下载到本地,并且远程机器需要支持ftp服务(例如启动proftpd);参数较多,使用上比scp复杂

【用法】

wget是一个从网络上自动下载文件的自由工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理。 

命令格式:

wget [参数] ftp://<目标机器ip或主机名>/<文件的绝对路径>   #proftpd格式

举例:

wget ftp://192.168.0.10//home/work/source.txt   #从192.168.0.10上拷贝文件夹source.txt

wget ftp://www.myhost.com//home/work/source.txt   #使用主机名 

wget -nH -P /home/work/ ftp://www.myhost.com//home/work/source.txt   #指定本地保存路径,使用参数“-P 路径”或者“--directory-prefix=路径”;-nH, --no-host-directories 不创建主机目录

wget -r -l 0 -nH -P /home/work/ ftp://www.myhost.com//home/work/sourcedir   #递归下载sourcedir目录,使用参数-r;参数-l, --level=NUMBER 最大递归深度 (inf 或 0 代表无穷). 

wget --cut-dirs=3 -r -l 0 -nH -P /home/work/ ftp://www.myhost.com//home/work/sourcedir   #-参数-cut-dirs=NUMBER 忽略 NUMBER层远程目录,本例中将myhost上的sourcedir目录保存到本地的work目录下。

wget --limit-rate=200k --cut-dirs=3 -r -l 0 -nH -P /home/work/ ftp://www.myhost.com//home/work/sourcedir   #-参数--limit-rate=RATE 限定下载输率 

wget --limit-rate=200k --cut-dirs=3 -r -l 0 -nH -P /home/work/ -X /home/work/sourcedir/notincludedir ftp://www.myhost.com//home/work/sourcedir   #排除路径使用-X参数 

wget -q --limit-rate=200k --cut-dirs=3 -r -l 0 -nH -P /home/work/ -X /home/work/sourcedir/notincludedir ftp://www.myhost.com//home/work/sourcedir   #参数-q表示安静模式,无输出;默认是-v,冗余模式 

 

4、rsync

【优点】功能强大,操作类似scp,支持排除目录,支持限速参数,还支持本地复制

【缺点】暂无

【用法】

rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的操作方式和scp和相似,但是比scp强大很多。使用双冒号分割主机名和文件路径时,是使用rsync服务器,这里不做介绍。 

命令格式:

rsync [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径>

举例:

rsync /home/work/source.txt work@192.168.0.10:/home/work/   #把本地的source.txt文件拷贝到192.168.0.10机器上的/home/work目录下

rsync work@192.168.0.10:/home/work/source.txt /home/work/   #把192.168.0.10机器上的source.txt文件拷贝到本地的/home/work目录下

rsync work@192.168.0.10:/home/work/source.txt work@192.168.0.11:/home/work/   #把192.168.0.10机器上的source.txt文件拷贝到192.168.0.11机器的/home/work目录下

rsync -r /home/work/sourcedir work@192.168.0.10:/home/work/   #拷贝文件夹,加-r参数 

rsync -r /home/work/sourcedir work@www.myhost.com:/home/work/   #使用主机名 

rsync -r -v /home/work/sourcedir work@www.myhost.com:/home/work/   #显示详情,加-v参数

rsync -r -v --exclude sourcedir/notinclude  /home/work/sourcedir work@www.myhost.com:/home/work/   #排除子目录,注意:--exclude后面的路径不能为绝对路径,必须为相对路径才可以,否则匹配不上,就不会被排除掉。 

 

5

linux系统下用 ssh登录管理服务器,并用scp上传下载文件

登录ssh方法:

1、ssh 主机

ssh 192.168.1.155 (表示用root用户登录到服务器)

2、ssh 用户@主机

ssh user1@192.168.1.155  (表示用user1登录到服务器)

3、ssh 主机 -l 用户名 -p 端口

ssh 192.168.1.155 -l user2 -p 8080 (表示user2用户用8080端口连接到192.168.1.155的服务器)

用scp命令上传和下载文件

scp root@192.168.1.155:1.txt 2.txt (把服务器的1.txt下载到本地,并且重命名为2.txt)

scp 2.txt root@192.168.1.155:3.txt (把本地2.txt文件上传到服务器的root目录下,并且命名为3.txt)

scp -r 的话表示上传或者下载文件夹

scp -表示加上端口信息(P为大写)

 

6、winscp 

在Windows下下载安装 winscp,运行后可以看到远程linux 服务器目录,选择要上传的文件拖到相应的目录即可,该方式简单实用

 

7、windows + scp

windows系统下用 ssh登录管理服务器,并用scp上传下载文件

前提,在windows下安装cygwin,后面的操作同5

1 ssh    www.2cto.com  

在Cygwin中执行:𝑠𝑠ℎ 𝑢𝑠𝑒𝑟𝑛𝑎𝑚𝑒@𝑟𝑒𝑚𝑜𝑡𝑒ℎ𝑜𝑠𝑡2𝑠𝑐𝑝命令𝑠𝑐𝑝基于𝑆𝑆𝐻协议,可以将本地文件拷贝到远程服务上的指定目录,格式如下:sshusername@remotehost2scp命令scp基于SSH协议,可以将本地文件拷贝到远程服务上的指定目录,

格式如下: scp filename username@remotehost:remotedirectory

执行:$ scp ipmsg.log admin@10.25.1.202:/home/admin

 

8、ftp、sftp

Step1. 在云服务器配置FTP服务

1.在root权限下,通过如下命令安装Vsftp。

[root@VM_250_202_tlinux ~]# yum install vsftpd

2.在启动vsftpd服务之前,需要登录云服务器修改配置文件,将匿名登录禁用掉。打开配置文件,命令如下:

[root@VM_250_202_tlinux ~]# vim /etc/vsftpd/vsftpd.conf

在配置文件中第11行的“anonymous_enable=YES”前面加上#号,即将匿名登录禁用。

3.读取生效配置。

[root@VM_250_202_tlinux ~]# cat /etc/vsftpd/vsftpd.conf |grep ^[^#] 

local_enable=YESwrite_enable=YESlocal_umask=022anon_upload_enable=YESanon_mkdir_write_enable=YESanon_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YES

4.启动vsftpd服务。

[root@VM_250_202_tlinux ~]# service vsftpd start

5.设置FTP用户账号。设置成功后,即可通过该账号登录FTP服务器。(1)设置FTP用户的账号,例如账号为“ftpuser1”,目录为/home/ftpuser1,且设置不允许通过ssh登录。

[root@VM_250_202_tlinux ~]# useradd -m -d /home/ftpuser1 -s /sbin/nologin ftpuser1

(2)设置账号对应的密码,例如密码为“ftpuser1”。

[root@VM_250_202_tlinux ~]# passwd ftpuser1

6.修改vsftpd的pam配置,使开发者可以通过自己设置的FTP用户帐号和密码连接到云服务器。(1)修改pam。

[root@VM_250_202_tlinux ~]# vim /etc/pam.d/vsftpd

内容修改为:

#%PAM-1.0 auth required /lib64/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed auth required /lib64/security/pam_unix.so shadow nullok auth required /lib64/security/pam_shells.so account required /lib64/security/pam_unix.so session required /lib64/security/pam_unix.so 

(2)确认修改后的文件是否正确。

[root@VM_250_202_tlinux ~]# cat /etc/pam.d/vsftpd#%PAM-1.0 auth required /lib64/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed auth required /lib64/security/pam_unix.so shadow nullok auth required /lib64/security/pam_shells.so account required /lib64/security/pam_unix.so session required /lib64/security/pam_unix.so 

(3)重启vsftpd服务,使修改生效。

[root@VM_250_202_tlinux ~]# service vsftpd restartShutting down vsftpd: [ OK ]Starting vsftpd for vsftpd: [ OK ]

Step2. 上传文件到Linux云服务器

1.下载并安装开源软件FileZilla请使用FileZilla的3.5.1、3.5.2版本(使用3.5.3版本的FileZilla进行FTP上传会有问题)。由于FileZilla 官网上只提供了最新的3.5.3版本下载,因此建议开发者自行搜索3.5.1、3.5.2下

载地址。建议的3.5.1 下载地址:http://www.oldapps.com/filezilla.php?old_filezilla=6350

2.连接FTP运行FileZilla,按下图所示进行配置,配置后点击“快速链接”:

配置信息说明如下:(1)主机:云服务器的公网IP(在云服务器“管理视图”页面可查看云服务器的公网IP)。(2)用户名:在Step1中设置的FTP用户的账号,这里以“ftpuser1”为例。(3)密码:在Step1中设置的FTP用

户账号对应的密码,这里以“ftpuser1”为例。(4)端口:FTP监听端口,默认为“21”。

3.上传文件到Linux云服务器上传文件时,鼠标选中本地文件,拖拽到远程站点,即将文件上传到了Linux云服务器。注意:云服务器FTP通道不支持上传tar压缩包后自动解压,以及删除tar包功能。

 

9、SecureCRT

本地下载SecureCRT,解压后打开,点击快速连接upload11

输入服务器IP地址和用户名,点击连接upload12

输入服务器密码,点击确定upload13

连接成功之后,若服务器未安装RZ软件,输入apt-get install lrzsz,或 yum install lrzsz 回车等待安装upload23

安装rz成功之后,输入rz,回车upload14

弹出文件选择窗口,选择需要上传的文件,点击添加upload15

等待文件上传,完成之后则完成文件上传upload17

输入 rz

上传的文件默认在root下

Zmodem传输数据会使用到2个命令:

sz:下载(send),将选定的文件发送到本地机器,例如: sz  mimvp.log  ,即下载文件 mimvp.log

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

使用前,记得先安装 lrzsz

brew install lrzsz

sudo yum -y install lrzsz

sudo apt-get install -y install lrzsz

 

问题:macOS Catalina v10.15.2 存在 SecureCRT rz 上传文件没反应

解决:直接拖拽文件到shell窗口内,然后选择Start Zmodem Upload (亲测可用)

详见米扑博客:SecureCRT 上传下载 ASCII、Xmodem、Ymodem 、Zmodem、Kermit

 

10、putty

本来是OS X,因为有了iOS、watchOS、tvOS的命名方式(前面小写后面OS大写,一体化命令规则),估计未来OS X会更名为macOS。

macOS上的免费ssh客户端软件并不多,我已知的有:SecureCRT、iTerm2、vSSH Lite、Telnet Lite、Putty

Windows 连接 Linux 常用工具

Putty 保存密码自动登陆的四种方法

Putty MTPutty 设置编码 UTF-8

macOS 安装 putty

 

 

参考推荐

SecureCRT 上传下载 ASCII、Xmodem、Ymodem 、Zmodem、Kermit

SecureCRT 8.5.1 For macOS Catalina 破解方案

SecureCRT 8.0.2 For Mac/Ubuntu 破解方案

SecureCRT 7.0.2 For Mac 10.12.3 完美破解版

SecureCRT 实用配置

SecureCRT 自动登录设置

SecureCRT 访问 Amazon EC2 主机

SecureCRT 超时自动断开的解决方法

Mac 使用 SecureCRT登陆,提示“Password authentication failed”原因

macOS Catalina v10.15.2 存在 SecureCRT rz 上传文件没反应

Windows 连接 Linux 常用工具

Putty 保存密码自动登陆的四种方法

Putty MTPutty 设置编码 UTF-8

macOS 安装 putty

Mac 上启用 root 用户或更改 root 密码

Mac parallels desktop 13破解下载及Windows安装方法

macOS 安装 Photoshop 2020 v21.0.1.47 for Mac 中文破解版