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命令会覆写文件而不抛出警告信息。
使用示例
传输一个本地文件到远程系统
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是文件要放的远程机器的目录。若不指明此命令,则文件会放在远程机器的用户的家目录。
命令执行时,需要输入远程机器用户登录密码。传输远程机器文件到本地机器
scp [email protected]:/remote/file.txt /local/directory #将远程机器的file.txt文件复制到本地目录/local/directory下。本地目录需要指明。当前目录用.表示。
在两个远程机器间传输文件
#注意:以下命令不支持基于用户名,密码的方式传输。即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这个文件在本地的路径