系统管理指南:网络服务

使用 rcp 进行远程复制

rcp 命令可在本地系统与远程系统或两个远程系统之间复制文件或目录。您可从远程系统使用此命令(使用 rlogin 命令登录后),也可从本地系统(在未登录到远程系统的情况下)使用此命令。

使用 rcp,可执行以下远程复制操作:

如果正在运行自动挂载程序,则可以使用 cp 命令来执行这些远程操作。但是,cp 只能应用于自动挂载程序创建的虚拟文件系统以及与用户起始目录有关的操作。由于 rcp 可以执行同样的操作而没有这些约束,因此本节仅介绍如何使用 rcp 来完成这些任务。

复制操作的安全注意事项

要在系统间复制文件或目录,必须具有登录和复制文件的权限。


注意 – 注意 –

cprcp 命令都可以覆写文件而不发出任何警告。执行该命令之前,请确保文件名正确。


指定源和目标

借助 C shell 中的 rcp 命令,可使用绝对或缩写路径名指定源(要复制的文件或目录)和目标(将文件或目录复制到的位置)。

 

绝对路径名 

缩写路径名 

从本地系统 

mars:/home/jones/myfile.txt

~jones/myfile.txt

在远程登录后 

/home/jones/myfile.txt

~jones/myfile.txt

绝对路径名可标识特定系统上挂载的文件或目录。在前面的示例中,第一个绝对路径名标识 mars 系统上的文件 (MyFile.txt)。缩写路径名标识相对于用户起始目录的文件或目录,而不管起始目录的驻留位置如何。在前面的第一个示例中,缩写路径名标识的是同一个 MyFile.txt 文件,只不过使用 "~" 符号来表示 jones 起始目录:

~ = mars:/home/jones

第二行中的示例向用户演示远程登录后的绝对路径名和缩写路径名。缩写路径名的差别并不明显。不过,由于远程登录操作将 jones 起始目录挂载到本地系统上(相当于本地用户的起始目录),因此绝对路径名不再需要指明系统名 mars。有关远程登录操作如何挂载其他用户的起始目录的更多信息,请参见远程登录后发生的情况

下表提供了 C shell 识别的绝对路径名和缩写路径名的样例。该样例使用的术语如下:

表 29–4 允许使用的目录和文件名语法

登录到 

语法 

说明 

本地系统  

.

本地工作目录 

 

path/filename

本地工作目录中的pathfilename

 

~

当前用户的起始目录 

 

~/path/filename

当前用户起始目录下的 pathfilename

 

~user

user 的起始目录

 

~user/path/filename

user 起始目录下的 pathfilename

 

remote-system:path/filename

远程工作目录中的 pathfilename

远程系统 

.

远程工作目录 

 

filename

远程工作目录中的 filename

 

path/filename

远程工作目录中的 pathfilename

 

~

当前用户的起始目录 

 

~/path/filename

当前用户起始目录中的 pathfilename

 

~user

user 的起始目录

 

~/user/path/filename

user 起始目录下的 pathfilename

 

local-system:path/filename

本地工作目录中的pathfilename

Procedure如何在本地系统和远程系统间复制文件 (rcp)

  1. 确保您具有复制权限。

    您至少应在源系统上具有读取权限,在目标系统上具有写入权限。

  2. 确定源和目标的位置。

    如果不知道源或目标的路径,可以先按如何登录到远程系统 (rlogin)中所述使用 rlogin 命令登录到远程系统。然后,浏览远程系统直到找到该位置。从而,可在未注销的情况下执行下一步。

  3. 复制文件或目录。


    $ rcp [-r] source-file|directory   target-file|directory
    
    rcp

    (无选项)将源中的单个文件复制到目标。

    -r

    将源中的目录复制到目标。

    无论您登录到远程系统还是登录到本地系统,此语法都适用。只是文件或目录的路径名要进行相应更改,如表 29–4 及以下样例所示。

    您可使用 "~" 和 "." 字符来指定本地文件或目录名称的路径部分。但是请注意,"~" 适用于当前用户而不适用于远程系统,"." 适用于所登录到的系统。有关这些符号的说明,请参见表 29–4


示例 29–8 使用 rcp 将远程文件复制到本地系统

在此示例中,rcp 用于将远程系统 pluto/home/jones 目录中的文件 letter.doc 复制到本地系统 earth 上的工作目录 (/home/smith):


earth(/home/smith): rcp pluto:/home/jones/letter.doc .

在此情况下,rcp 操作是在未远程登录的情况下执行的。此处,命令行结尾的 "." 符号表示本地系统而非远程系统。

目标目录也是本地用户的起始目录,因此还可使用 "~" 符号来指定它。



示例 29–9 使用 rloginrcp 将远程文件复制到本地系统

在此示例中,rcp 操作在执行 rlogin 命令之后运行,以将远程系统中的文件复制到本地系统。尽管该操作的流程与前一示例的流程相同,但已针对远程登录更改了路径:


earth(/home/smith): rlogin pluto

.

.

.

pluto(/home/jones): rcp letter.doc ~

在此情况下,不适合在命令行结尾使用 "." 符号。由于远程登录,因此该符号仅表示远程系统-实质上指示 rcp 创建重复文件。但是,"~" 符号表示当前用户的起始目录,即使登录远程系统也是如此。



示例 29–10 使用 rcp 将本地文件复制到远程系统

在此示例中,rcp 用于将本地系统 earth 的起始目录 (/home/smith) 中的文件 notice.doc 复制到远程系统 pluto/home/jones 目录:


earth(/home/smith): rcp notice.doc pluto:/home/jones

由于未提供远程文件名,因此文件 notice.doc 将以相同名称复制到 /home/jones 目录。

在下述情况下,将重复执行前面示例中的 rcp 操作,但 rcp 是从本地系统上的另一工作目录 (/tmp) 输入的。请注意,"~" 符号用于表示当前用户的起始目录:


earth(/tmp): rcp ~/notice.doc pluto:/home/jones


示例 29–11 使用 rloginrcp 将本地文件复制到远程系统

在此示例中,rcp 操作在执行 rlogin 命令之后运行,以将本地文件复制到远程目录。尽管该操作的流程与先前示例的流程相同,但路径已经针对远程登录进行了更改。


earth(/home/smith): rlogin pluto

.

.

.

pluto(/home/jones): rcp ~/notice.doc .

在此情况下,"~" 符号可用来指示当前用户的起始目录,即使该目录位于本地系统上。由于用户已登录到远程系统,因此 "." 符号表示远程系统上的工作目录。以下是可执行相同操作的替换语法:


pluto(/home/jones): rcp earth:/home/smith/notice.doc /home/jones