使用安全副本复制文件
安全复制命令(使用scp运行)是一个Linux命令,它允许在两台计算机之间传输文件。这可以在本地到远程服务器,从远程服务器到本地位置,甚至在两个远程服务器之间。
当复制到远程主机或从远程主机复制时,scp使用ssh进行数据传输。这意味着需要身份验证,但文件以安全的方式复制。启动scp请求时,该命令首先建立到远程位置的ssh连接,然后用于其余的传输。
也可以将文件复制到本地硬盘驱动器上,但在这种情况下,您可能应该使用标准的cp命令。
安全复制是一个易于使用的命令,并且具有非常简单的语法。我倾向于使用scp比其他远程文件复制工具(如rsync)更多,因为我可以轻松记住命令的标志和语法。它也比不安全的FTP等其他传输机制更安全。
scp具有“源”后跟“目标”的语法。目标或目的地都可以写为远程引用。例如,要将本地文件复制到远程服务器,您可以使用以下命令。
scisource.txt[email protected]:/destination/directory/target.txt
使用上面的也会将文件的名称从更改为source.txt,target.txt因此如果您希望文件具有相同的名称,则必须小心。上述机制的替代方案是省略目标文件名,这将使用copu.conf文件中指定的原始文件名。
scisource.txt[email protected]:/destination/directory
复制到远程服务器时,最好使用目标的完整目录。使用的默认目录是ssh用户的主目录。需要完整路径才能将目的地设置为别处。
如果要将文件从远程服务器复制到本地目录,只需先放置远程部分。
scp[email protected]:/source/directory/source.txttarget.txt
要复制整个目录的内容,请使用-r标志。这将递归复制目录和任何子目录。这会将源目录复制到目标目录中,因此您无需在此处添加目录名称。
scp-rsource/directory[email protected]:/destination
如果您的ssh服务器使用的是非标准端口,那么您可以使用-P标志让scp知道用于远程连接的端口。下面使用6001端口连接远程主机。
scp-P6001source.txt[email protected]:/destination/source.txt
请注意,端口标志是大写的“P”,因为小写的-p标志用于保留原始文件中的修改时间、访问时间和模式。
当您运行scp命令时,每个复制的文件都会有一个进度表,显示完成传输的剩余时间。这对于较大的文件很有用,但在复制大量较小的文件时毫无意义,因为每个文件进度表只能看到一瞬间。要关闭进度会议,请使用-q标志。
如果您想节省带宽,您可以选择使用-l标志(以Kbit/s指定)将带宽限制为引用阈值。或者,您可以尝试允许在使用-C标志传输文件之前对文件进行压缩,尽管并非所有版本的ssh都支持这一点。
这些是使用scp命令的基本控件。还有一些可用的标志可以控制ssh连接的使用方式,并且只有在您有特殊的ssh设置时才真正有用。