文件传输

scp命令的使用

引言

scp(secure copy)是一个命令行工具,用于在两台机器间安全的传输文件和目录。安全性保证是由于文件和密码在传输时都会加密。可以跨系统,但建议传输的两台机器操作系统一样。

一.基于IP,用户名,和密码的文件传输

信息流可以是以下模式中的任意一种:
本地机器到远程机器;远程机器到本地机器;两个远程机器间(本地机器上操作)

命令使用语法

命令使用的基本格式:

scp [OPTION] UserName@Source_Host:file1 UserName@Destination_Host:file2

关键:文件从前一个对象传输到后一个对象。
[OPTION]参数如下:

-P  指明远程机器的ssh端口。
-p  保留原文件的修改时间,访问时间和访问权限。
-q  不显示传输进度条(传输的过程信息:如传输速度)
-C  运行压缩数据
-r  复制目录时使用(recursive:递归的)

命令使用说明

scp命令的使用时,数据的传输依赖于ssh,因此要提供密钥和密码以在远程机器上认证。
复制文件时:必须要有对源文件的读权限和对目标文件的写权限。
若两个系统中有同名同位置的文件,scp命令会覆写文件而不抛出警告信息。

使用示例

  1. 传输一个本地文件到远程系统

    scp file.txt [email protected]:/remote/directory  #file.txt不重命名
    scp file.txt [email protected]:/remote/directory/newfilename.txt #重命名为newfilename.txt
    scp -P 2322 file.txt [email protected]:/remote/directory #ssh默认监听端口22。若远程机器ssh监听的不是22,则-P参数指明监听端口
    scp -r /local/directory [email protected]:/remote/directory #传输目录和传输文件类似,只需加一个-r参数。本地目录可以用相对路径。

    file.txt是要传输的本地文件;
    [email protected] 是远程机器的用户名和IP
    /remote/directory是文件要放的远程机器的目录。若不指明此命令,则文件会放在远程机器的用户的家目录。
    命令执行时,需要输入远程机器用户登录密码。

  2. 传输远程机器文件到本地机器

    scp [email protected]:/remote/file.txt /local/directory #将远程机器的file.txt文件复制到本地目录/local/directory下。本地目录需要指明。当前目录用.表示。
  3. 在两个远程机器间传输文件

    #注意:以下命令不支持基于用户名,密码的方式传输。即scp -3 user1@ip1:/files/file.txt user2@ip2:/files,再输入
    scp -3 [email protected]:/files/file.txt [email protected]:/files #复制远程机器host1.com上的文件file.txt到远程机器host1.com的/files目录下。
    #-3选项使得数据传输经过本地机器,若无此选项,则数据直接在两个远程机器上传输。

    可以从远程先用ssh远程登录到一台远程机器,再从此机器拷贝文件到另一台远程机器。

    二.基于密钥的传输

    从远程到本地机器传输文件

    scp -i id_rsa_path username@ip:/remote/file.txt /local/directory #-i参数指明私钥id_rsa这个文件在本地的路径

你可能感兴趣的:(scplinux)