假若您使用LinuxCP命令复制文件和文件夹,这么您会发觉SCP并没有太大不同。主要的附加参数是远程目标主机名。我们深入研究了在系统之间传输数据时有效使用SCP命令的最佳方式。
通常来说,当你想把文件和文件夹从一台服务器/本地主机复制到另一台服务器/本地主机时,你须要使用Samb(SMB)或NFS等文件共享服务。虽然它们很可靠,但在一次性复制文件时,使用它们是一个冗长的过程。
那是由于你须要设置和配置一个Samba或NFS服务器。这这就须要理解和使用SCPLinux命令。
SCP(SecureCopy)命令是一个Linux实用程序,用于在主机之间安全地复制文件/目录。它使用SSH(安全Shell)传输和验证用户。为此,如同使用SSH一样,您须要晓得远程主机的凭据。
倘若您精通用于复制文件和文件夹的LinuxCP命令,这么SCP并没有太大不同。惟一添加且有用的参数是远程目标主机名。看一下下边的命令。
scpfile_name_to_copyusername@destination_host:destination_directory_path
在destination_host参数中,您须要输入远程主机的IP地址。倘若您不晓得怎样找到它linux运维招聘,请在终端上运行ipconfig命令。
在Linux中使用SCP命令的最佳方式
在本文中,我们将研究15个有用的SCP命令,您可以在与Linux系统的日常交互中使用它们。我们将使用Ubuntu18.04LTSServer服务器作为我们的远程主机。
1.将一个文件从本地计算机复制到远程主机
这是最直接的命令之一。我的本地计算机上有一个名为Hello.scp的文件,我们将其复制到远程服务器上。请参阅下边的命令:
scpHello.scptuts@192.168.83.132:/home/tuts/FOSSLINUX
将单个文件从本地主机复制到远程主机
左侧是localhost本地主机,右边是UbuntuServer服务器。倘若您是第一次这样做,则应当看见一条警告消息,寻问您是否要继续联接,请键入“yes”。您应当见到提示输入远程主机密码的提示。通过在远程主机上执行ls命令,我们看见我们早已成功复制了文件。
2.复制多个文件
在上一个命令中,我们看见了怎样复制单个文件。要复制多个文件,请使用以下命令中的句型。我们将复制三个文件Hello1,Hello2和Hello3。
scpHello1Hello2Hello3tuts@192.168.83.132:/home/tuts/FOSSLINUX
复制多个文件
通过在远程主机上运行ls命令,我们看见我们早已成功复制了文件。
3.递归复制目录
不仅文件,我们还可以使用SCP将目录从本地计算机复制到远程目标。使用以下命令中的句型。我们将复制文件夹FOSSTUTS。
scp-rFOSSTUTStuts@192.168.83.132:/home/tuts/FOSSLINUX
使用SCP命令复制目录
注意,在整个目录上执行任何操作时,我们将须要包含-r参数,该参数表示递归。
4.复制具有详尽输出的文件
在我们的SCP句型中包含一个详尽参数会复印出SCP在后台执行的所有过程。让我们使用-v(详尽)参数将多个文件复制到我们的远程主机。
scpHello1Hello2Hello3tuts@192.168.83.132:/home/tuts/FOSSLINUX
复制带有详尽输出的文件
从上图可以看见,我们在本地计算机上运行的命令有好多输出。它为您提供了有关当前执行的操作的所有详尽信息。
5.在两个远程主机之间复制文件
假定您要管理多个远程服务器,而且要将文件从一台服务器复制到另一台服务器。查看下边命令中的句型。
scptuts@192.168.43.96:/home/tuts/FOSSLINUX/Hello1tuts@192.168.83.132:/home/tuts/FOSSLINUX
跨两个远程主机复制文件
我们正在将文件Hello1从主机192.168.43.96复制到主机192.168.83.132。
6.压缩和复制文件
为了推动复制过程并节约带宽,可以使用-C参数压缩文件。数据将在本地计算机上即时压缩,并在远程主机上解压缩。请参见下边的句型。
scp-vCHello1tuts@192.168.83.132:/home/tuts/FOSSLINUX
压缩和复制文件
我们包含了-v(详尽)参数,便于您可以查看正在发生的情况。
7.管理带宽
将文件复制到远程主机可以解释为上载。假如上传带宽很高,则可能会影响在后台运行的其他进程。您可以使用-l参数限制在复制过程中使用的带宽。请参阅下边的命令。
scp-l100Hello1tuts@192.168.83.132:/home/tuts/FOSSLINUX
管理带宽
您分配的带宽以千字节为单位。因而,在里面的命令中,我们使用最大100Kb/s的速率进行复制过程。
8.使用自定义端标语
如上文所述linux 文件加密传输,SCP使用SSH来执行文件复制过程。默认情况下,SSH在端口22上运行;并且,假如将远程服务器上的SSH服务器配置为在其他端口上运行,则可以在SCP命令手指定此端口。请参阅下边的命令。
scp-P22Hello1tuts@192.168.83.132:/home/tuts/FOSSLINUX
在SCP中使用自定义端标语
因为我仍未配置任何SSH服务器,因而本文的端标语保留为22。
9.复制和保留文件属性
假如要复制文件并保留权限,更改时间,访问时间等属性linux 文件加密传输,请在SCP命令中使用-p参数。请参阅下边的命令。
scp-P22Hello1tuts@192.168.83.132:/home/tuts/FOSSLINUX
复制并保留文件属性
请注意red hat linux,在此示例中,“p”是大写字母,与使用自定义端标语不同。
10.使用-q参数抑制SCP输出
假定您不想复印SCP输出,错误通知,警告甚至进度表。您可以使用-q参数来实现它,该参数严禁显示所有SCP输出。
scp-qHello1tuts@192.168.83.132:/home/tuts/FOSSLINUX
使用-q参数抑制SCP输出。
在上图中,惟一的SCP输出是密码提示。-q参数严禁所有其他输出。
11.使用SCP将文件从远程主机复制到本地计算机。
对于前面的大多数示例,我们将文件从本地计算机复制到远程服务器。如今,假定您要将文件从远程服务器复制到本地计算机。您应当在常规句型中对SCP命令进行一些调整。查看下边的命令。
scptuts@192.168.83.132:/home/tuts/FOSSLINUX/serverFile.txt/home/tuts/FOSSLINUX
使用SCP将文件从远程主机复制到本地计算机。
通过在本地计算机上运行ls命令,我们可以看见“serverFile.txt”已成功复制。
12.复制文件和目录而不使用密码
从里面的示例中,我们看见,每每须要复制文件时,就会提示您输入密码。我们可以通过生成在身分验证过程中使用的SSH秘钥来跳过此步骤。
要生成SSH秘钥,请使用以下命令。
ssh-keygen-trsa
系统应生成一个SSH秘钥。您可以从终端的输出中见到正在发生的过程。如今,我们须要将秘钥复制到我们的远程主机以用于身分验证。使用下边的命令。
ssh-copy-idroot@192.168.4.200
生成SSH秘钥
如今,让我们尝试将文件从本地计算机复制到远程主机。
scpHello1tuts@192.168.83.132:/home/tuts/FOSSLINUX
复制没有密码的文件
从前面的图片中,我们看见没有提示输入密码。
13.使用其他密码
SCP使用AES密码/加密来安全地复制文件。并且,可以使用-c参数指定其他密码方案。注意,c是大写字母,与压缩不同,其中c是小写字母。请参阅下边的命令。
scp-cTESTFILEtuts@192.168.83.132:/home/tuts/FOSSLINUX
使用其他密码
我们早已指定了要用作AES的加密方案。您还可以使用河豚鱼等其他食物。
scp-cblowfishTESTFILEtuts@192.168.83.132:/home/tuts/FOSSLINUX
14.使用SSH秘钥文件取代密码
SCP容许您使用-i参数和秘钥文件来使用秘钥文件而不是密码来完成身分验证过程。请参阅下边的命令。
scp-cprivateKey.pemTESTFILEtuts@192.168.83.132:/home/tuts/FOSSLINUX
使用秘钥文件取代密码
15.使用SCPShell脚本复制文件
假定您必须定期使用SCP命令,则可以编撰一个Shell脚本来简化整个过程。在本文中,我们将编撰一个脚本,该脚本从destfile.txt中读取目标主机。
destfile.txt文件
以下是我们的SCP脚本
echo"STARTINGSCPSCRIPT"
echo
echo-e"Enterthepathtothefileyouwishtocopy:c"
readfile
fordestin`cat/tmp/destfile.txt`;do
scp-rC$file${dest}:/tmp/
done
用“.sh”保存文件。扩充名,由于它是bash脚本。在执行脚本之前,使用chmod命令使脚本可执行,如右图所示。
使用SCPShell脚本
总结
这种是15个SCP实用示例,您可以应用这种示例来简化Linux系统的工作。