scp简介

scp从远程ssh拷贝文件及文件夹.
scp就是secure copy,是用来进行远程文件拷贝的.数据传输默认使用ssh1,并且和ssh1使用相同的认证方式,提供相同的安全保证.与rcp不同的是,scp会要求你输入密码.
rcp参考:
https://www.linuxcool.com/rcp
https://wangchujiang.com/linux-command/c/rcp.html


scp常用参数

https://www.linuxcool.com/scp
https://wangchujiang.com/linux-command/c/scp.html

-v 用来显示进度.可以用来查看连接,认证,或是配置错误.
-C 压缩选项.
-P 指定ssh端口.
注意-p已经被rcp使用.
-p 保留文件的最后修改时间,最后访问时间和权限模式;
-r 以递归方式复制
-4 强行使用IPV4地址.
-6 强行使用IPV6地址.


非22端口拷贝文件-P

# 指定ssh端口
scp -P 端口号 file username@ip:filepath

拷贝文件夹-r

递归拷贝-r(会覆盖)

注意,如果本地存在同名文件,会覆盖且无警告提示

# 拷贝文件夹,多加上一个-r参数即可
scp -r file username@ip:filepath

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

拷贝大量小文件到远程服务器

这种方式是在第远端主机上解压缩的,传输会比scp快很多

# 使用tar将/home打包,通过管道传输到远程机器解压到/根目录
# 这里是tar的参数
# -cvf 表示只打包不使用压缩
## -c tar的打包参数
## -v 显示详情,进度
## -f 指定文件名称,必须放到所有选项后面
# -xvf 表示解压指定文件
## -x 表示解压
## -C 大C表示解压到指定位置
tar -cvf-/ home | ssh root@192.168.1.1 tar -xvf--C /

scp常用示例


scp上传本地文件到远端机器

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

scp把远端机器上的文件下载到本地

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

scp把远端机器A的文件拷贝到远端机器B

拷贝本地文件到服务器

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

SCP断点续传

如果你要强调传输的安全性 可以采用rsync + ssh

参考: https://juejin.cn/post/7021503974175932453

## -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性
## -v, --verbose 详细模式输出
## -z, --compress 对备份的文件在传输时进行压缩处理
##-P 断点续传并打印过程
## -e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
# rsync -avzP  -e 'ssh -p port' root@[$Remote_Host]:[$Remote_Dir] [$Local_Dir]
# rsync -avzP  -e 'ssh -p port' root@[$Remote_Host]:[$Remote_Dir] [$Local_Dir]
rsync -avzP --rsh=ssh local_file_pic.tar.gz root@192.168.205.304:/home/Remote_file.tar.gz

文件断点下载

# 文件断点下载
##-P 断点续传并打印过程
## -e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
rsync -P --rsh=ssh root@192.168.0.11:/root/large.tar.gz /dounine/targe.tar.gz

文件断点上传

# 文件断点上传
##-P 断点续传并打印过程
## -e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
rsync -P --rsh=ssh /dounine/targe.tar.gz root@192.168.0.11:/root/large.tar.gz

文件目录断点下载

# 文件目录断点下载
##-P 断点续传并打印过程
## -e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
rsync -P --rsh=ssh -r root@192.168.0.11:/root/storage /dounine

文件目录断点上传

# 文件目录断点上传
##-P 断点续传并打印过程
## -e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
rsync -P --rsh=ssh -r /dounine root@192.168.0.11:/root/storage

使用sftp上传文件和下载文件

在这里插入图片描述


sftp中的常用命令

# 查看sftp服务器中的当前所在路径
pwd

# 查看sftp服务器默认当前目录下内容
ls

# 查看本地的当前所在路径
lpwd

# 查看本地默认当前目录下内容
lls

put-上传文件到服务器

把本地文件上传到sftp服务器的当前目录下

# 把d:/test.txt上传到Linux的当前目录下
put d:/test.txt

get-下载文件到本地

把Linux服务器上的文件下载到本地的当前目录

# 下载文件到本地当前目录
get test.log

lrzsz简介

lrzsz使用zmodem文件传输协议;
需要配合SecrueCRTxshell才有效;
Windows Terminal不支持zmodem文件传输协议,用不了lrzsz


安装lrzsz

# Centos安装lrzsz
yum install lrzsz -y

# Ubuntu安装
apt install lrzsz -y

文件上传

rz的意思为recevie zmodem,服务端来接收数据,对于客户端来说就是上传,文件大小限制为4GB.
Modem无法传输大于4GB的文件.


rz上传文件命令

# 在SecrueCRT或xshell中输入rz命令,弹出文件上传窗口
rz

在这里插入图片描述


拖拽上传命令

直接将文件拖拽到SecrueCRTxshell对话框中,即可完成文件上传


文件下载

sz的意思是send zmodem,服务端来发送数据,对于客户端来说就是下载,文件大小限制为4GB.


sz下载文件命令

默认把文件下载到Windows的 Download 目录下

# sz 服务器上的文件路径
sz /root/log.log

rtty

rtty是一个webssh
项目地址:https://github.com/zhaojh329/rtty

在这里插入图片描述


传输文件

# 将文件从本地传输到远程设备
rtty -R

# 将文件从远程设备传输到本地
rtty -S test.txt

trzsz

trzsz是一个不使用zmodem文件传输协议的文件传输工具,可以了解下.
项目地址: https://github.com/trzsz/trzsz-go
https://trzsz.github.io/cn/

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐