在Linux中传输文件文件夹的10个scp命令

这篇具有很好参考价值的文章主要介绍了在Linux中传输文件文件夹的10个scp命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

scp 命令的基本语法

 

下面的命令将读作 copy source_file_name进入destination_folderdestination_host使用username account

> scp source_file_name username@destination_host:destination_folder

里面有很多参数scp你可以使用的命令。以下是可能在日常使用中使用的参数。

使用-v参数提供 scp 进程的详细信息

基础的scp不带参数的命令将在后台复制文件。除非该过程完成或出现某些错误,否则用户将看不到任何内容。

你可以使用 -v 参数将调试信息打印到屏幕中。它可以帮助你调试连接、身份验证和配置问题。

rumenz@local $ scp -v Label.pdf rumenz@192.168.1.110:.
输出

复制文件时 scp 显示进度

Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -t .
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: Host '202.x.x.x' is known and matches the RSA host key.
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Next authentication method: password
rumenz@202.x.x.x's password:
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
Sending file modes: C0770 3760348 Label.pdf
Sink: C0770 3760348 Label.pdf
Label.pdf 100% 3672KB 136.0KB/s 00:27
Transferred: sent 3766304, received 3000 bytes, in 65.2 seconds
Bytes per second: sent 57766.4, received 46.0
debug1: Exit status 0

提供原始文件的修改时间、访问时间和模式

-p 参数将帮助你解决这个问题。估计时间和连接速度将出现在屏幕上。

rumenz@local $ scp -p Label.pdf rumenz@192.168.1.110:.
输出

scp 估计复制大文件所需的时间

> rumenz@202.x.x.x's password:
Label.pdf 100% 3672KB 126.6KB/s 00:29

使用 -C 参数加快文件传输速度

可以加快文件传输速度的参数之一是 -C 范围。这 -C 参数将随时随地压缩你的文件,独特的是压缩只发生在网络中。当文件到达目标服务器时,它将恢复到压缩前的原始大小。

> rumenz@local $ scp -pv messages.log rumenz@192.168.1.110:.
输出

scp 在不压缩的情况下传输文件

Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t .
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: identity file /home/pungki/.ssh/id_rsa type -1
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Trying private key: /home/pungki/.ssh/id_rsa
debug1: Next authentication method: password
rumenz@202.x.x.x's password:
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
debug1: Sending command: scp -v -p -t .
File mtime 1323853868 atime 1380425711
Sending file timestamps: T1323853868 0 1380425711 0
messages.log 100% 93MB 58.6KB/s 27:05
Transferred: sent 97614832, received 25976 bytes, in 1661.3 seconds
Bytes per second: sent 58758.4, received 15.6
debug1: Exit status 0

-C 允许压缩

rumenz@local $ scp -Cpv messages.log rumenz@192.168.1.110:.
输出

scp 使用压缩更快地传输文件

Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t .
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: identity file /home/pungki/.ssh/id_rsa type -1
debug1: Host '202.x.x.x' is known and matches the RSA host key.
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Next authentication method: publickey
debug1: Trying private key: /home/pungki/.ssh/id_rsa
debug1: Next authentication method: password
rumenz@202.x.x.x's password:
debug1: Enabling compression at level 6.
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
debug1: channel 0: new [client-session]
debug1: Sending command: scp -v -p -t .
File mtime 1323853868 atime 1380428748
Sending file timestamps: T1323853868 0 1380428748 0
Sink: T1323853868 0 1380428748 0
Sending file modes: C0600 97517300 messages.log
messages.log 100% 93MB 602.7KB/s 02:38
Transferred: sent 8905840, received 15768 bytes, in 162.5 seconds
Bytes per second: sent 54813.9, received 97.0
debug1: Exit status 0
debug1: compress outgoing: raw data 97571111, compressed 8806191, factor 0.09
debug1: compress incoming: raw data 7885, compressed 3821, factor 0.48

如果你要通过网络复制大量文件,-C 参数将帮助你减少所需的总时间。

压缩方法不适用于所有文件。当源文件已经被压缩时,就没有什么效果了。文件如.zip,.rar,pictures, 和.iso

更改 scp 密码以加密文件

默认情况下scp使用 AES-128 来加密文件。如果你想更改为其他密码对其进行加密,你可以使用 -c 范围。看看这个命令。

rumenz@local $ scp -c 3des Label.pdf rumenz@192.168.1.110:.

rumenz@202.x.x.x's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13

上面的命令告诉scp使用3des algorithm来加密文件。请注意此参数使用 -c不是-C

使用 scp 命令限制带宽使用

另一个可能有用的参数是 -l 范围。这 -l 参数将限制使用的带宽制 。如果你执行自动化脚本来复制大量文件,这将很有用

rumenz@local $ scp -l 400 Label.pdf rumenz@192.168.1.110:.

rumenz@202.x.x.x's password:
Label.pdf 100% 3672KB 50.3KB/s 01:13

scp 默认带宽的单位是Kilobyte/sec(KB/s)。所以如果你想限制你的带宽scp最多只有50 KB/s,你需要将其设置为50 x 8=400.

指定要与 scp 一起使用的特定端口

scp正在使用端口22作为默认端口。但出于安全原因,你可以将端口更改为另一个端口. 例如,我们使用端口2249.

rumenz@local $ scp -P 2249 Label.pdf rumenz@192.168.1.110:.

rumenz@202.x.x.x's password:
Label.pdf 100% 3672KB 262.3KB/s 00:14

递归复制目录中的文件

有时我们需要复制目录和其中的所有文件,目录

rumenz@local $ scp -r documents rumenz@192.168.1.110:.

rumenz@202.x.x.x's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13
scp.txt 100% 10KB 9.8KB/s 00:00

复> 制过程完成后,你将在目标服务器上找到一个名为documents及其所有文件。文件夹documents是自动创建的。

禁用进度表和警告 / 诊断消息

rumenz@local $ scp -q Label.pdf rumenz@192.168.1.110:.

rumenz@202.x.x.x's password:
rumenz@local $

可以看到,输入密码后,没有关于 scp 进程的信息。该过程完成后,你将再次看到提示。

通过代理使用 scp 复制文件

代理服务器通常用于办公环境。scp 本身没有配置代理。当你的环境使用代理时,你必须告诉scp 与代理进行通信。

例如代理地址是10.0.96.6代理端口是8080.代理还实现了用户身份验证。首先,你需要创建 ~/.ssh/config文件

ProxyCommand /usr/bin/corkscrew 10.0.96.6 8080 %h %p ~/.ssh/proxyauth

然后你需要创建文件 ~/.ssh/proxyauth 里面输入。

myusername:mypassword

前提是需要安装corkscrew

$ apt-get install corkscrew

Centos系统可以用yum安装corkscrew

# yum install corkscrew

由于 ~/.ssh/proxyauth 文件包含你的 usernamepassword 以明文格式,请确保该文件只能自己访问。

选择不同的ssh_config 文件

对于经常在公司网络和公共网络之间切换的移动用户来说,总是在scp中更改设置会很痛苦。

场景示例

代理在公司网络中使用,但不在公共网络中使用,并且你定期切换网络。

rumenz@local $ scp -F /home/pungki/proxy_ssh_config Label.pdf

rumenz@192.168.1.110:.
rumenz@202.x.x.x's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13

默认情况下 ssh_config 每个用户的文件将被放置在 ~/.ssh/config。创建一个特定的 ssh_config 具有代理兼容性的文件将更容易在网络之间切换。

当你在公司网络,你可以使用 -F 范围。当你在公共网络上时,你可以不用-F参数。文章来源地址https://www.toymoban.com/news/detail-546009.html

到了这里,关于在Linux中传输文件文件夹的10个scp命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SSH连接SFTP传输:如何使用libssh库在Linux环境下进行(文件、文件夹)传输到远端服务器

    target_host :远端主机IP target_username :远端主机用户名 ssh_options_set() 函数设置会话的选项。最重要的选项是: SSH_OPTIONS_HOST:要连接到的主机的名称 SSH_OPTIONS_PORT:使用的端口(默认为端口 22) SSH_OPTIONS_USER:要连接的系统用户 SSH_OPTIONS_LOG_VERBOSITY:打印的消息数量 直接传输密

    2024年04月13日
    浏览(72)
  • Linux-文件文件夹相关命令

    目录 常见命令 1. 创建空目录:mkdir 文件夹名 2. 删除空目录:rmdir 文件夹名 3. 创建多级目录:mkdir -p 123/abc 4. 删除非空文件 rm -rf 文件夹名 5. 创建文件: touch 文件名.后缀  / vi 文件名.后缀  6. 删除文件:rm 文件名.后缀 7. 合并文件内容:cat file1 file2 file3 将file1和file2的内容复

    2024年02月20日
    浏览(140)
  • Linux移动文件夹(文件)到其他文件夹 / 复制到其他文件夹 【cp / mv命令】

    1)将一个文件夹复制到另一个文件夹下(一般复制一个项目的时候,直接使用这个命令) cp -r /home/packageA /home/packageB 运行命令之后packageB文件夹下就有packageA文件夹了。  2)将一个文件夹下的所有内容复制到另一个文件夹下(这种一般是复制很多小文件的时候使用) cp -r /

    2024年02月06日
    浏览(75)
  • linux创建文件夹命令

    我们可以使用mkdir命令在 Linux 或类似 Unix 的操作系统中创建新目录或文件夹。本文将介绍如何在 Linux 或 Unix 系统中创建文件夹(也称为“目录”)。 操作步骤如下:1.在 Linux 中打开终端应用程序。2.输入mkdir命令。3.输入文件夹名称。 知道了最基本的语法,那么我们就上机实

    2024年01月20日
    浏览(60)
  • Linux移动文件和文件夹(目录)命令

    命令mv 英文move 翻译移动 mv命令可以移动文件或文件夹(目录),也可以重命令(覆盖)文件。 1. 移动文件/重命名 单纯地移动某一个文件直接使用: 这个方法也可以用来修改文件的名称。 2. 移动文件夹(目录)下的内容 如要移动某个文件夹下的 某个内容: 即可移走###内容

    2024年02月06日
    浏览(50)
  • Linux命令模糊查询文件或文件夹(包含find命令拓展)

    1、 find 命令 ​path(表示文件或文件夹的绝对路径 ​) -type f (表示查的是文件,-type d 表示查的是文件夹 ​) -name “cron*” (表示查cron开头的所有文件或文件夹) 2、 拓展 :

    2024年02月11日
    浏览(88)
  • Linux 删除文件夹命令(超详细)

    欢迎大家关注公众号【小白技术圈】,发送B02 or b02 领取Linux学习资料大礼包! 如果要删除一个空的文件夹,非常简单。打开终端,执行以下命令: 例如,如果要删除名为 “my_folder” 的空文件夹,命令如下: 要删除一个非空文件夹,我们需要使用 rm 命令,并结合一些选项来

    2024年02月04日
    浏览(66)
  • Linux:find命令简单使用(查找文件及文件夹)

    find的主要用来查找文件,也可以用于查看文件夹,二者用法类似,使用 -type d ,通过type指定查找文件夹, 如果不指定,是会将包含查找内容的文件和文件夹一起输出 举例:查找test目录位置 -type x :x是查找的文件类型,其类型一般有: 一般正规文件:f 设备文件:b、c 目录

    2024年02月11日
    浏览(90)
  • 使用安全复制命令scp在Windows系统和Linux系统之间相互传输文件

    现在已经有很多远程控制服务器的第三方软件平台,比如FinalShell,MobaXterm等,半可视化界面,使用起来非常方便和友好,两个系统之间传输文件直接拖就行,当然也可以使用命令方式在两个系统之间相互传递。 自动化和脚本化 命令方式可以通过脚本批量传输文件,实现自动

    2024年02月11日
    浏览(45)
  • 【linux命令】如何查看文件/文件夹所占空间大小

    使用 ls -lh 命令可以查看当前目录下所有文件的大小: 在上面的输出中,第一列是文件的权限和类型,第五列是文件大小。 使用 stat file1.txt 命令可以查看 file1.txt 文件的详细信息 在上面的输出中,第二行是文件大小。 使用 du 命令可以显示文件或目录的磁盘使用情况。你可以

    2024年02月14日
    浏览(134)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包