Go to main content

man pages section 1: User Commands

Exit Print View

Updated: Wednesday, July 27, 2022



rcp - remote file copy


rcp [-p] filename1 filename2
rcp [-pr] filename... directory



Caution  -  All data exchanges over this protocol are performed without encryption, and have no protection against spoofing or snooping of traffic. The in.rshd server is disabled by default on Oracle Solaris and most other modern operating systems, and both the in.rshd server and the rcp command may be removed in future versions of Oracle Solaris. Use of the scp(1) or sftp(1) utilities is strongly recommended instead.

The rcp command copies files between machines. Each filename or directory argument is either a remote file name of the form:


or a local file name (containing no : (colon) characters, or / (backslash) before any : (colon) characters).

The hostname can be an IPv4 or IPv6 address string. See inet(4P) and inet6(4P). Since IPv6 addresses already contain colons, the hostname should be enclosed in a pair of square brackets when an IPv6 address is used. Otherwise, the first occurrence of a colon can be interpreted as the separator between hostname and path. For example,


If a filename is not a full path name, it is interpreted relative to your home directory on hostname. A path on a remote host can be quoted using \ , " , or ' , so that the metacharacters are interpreted remotely.

rcp does not prompt for passwords. It uses your current local user name, which must be accepted on hostname to allow remote command execution by rsh(1).

rcp handles third party copies, where neither source nor target files are on the current machine. Hostnames can also take the form


to use username rather than your current local user name as the user name on the remote host. File names that are not full path names are interpreted relative to the home directory of the user named username, on the remote host.


The following options are supported:


Attempts to give each copy the same modification times, access times, modes, and ACLs if applicable as the original file.


Copies each subtree rooted at filename; in this case the destination must be a directory.

Exit Status

The following exit values are returned:


All files were copied successfully.


An error occurred.

See the NOTES section for caveats on the exit code.


See attributes(7) for descriptions of the following attributes:

Interface Stability

See Also

cpio(1), ftp(1), rlogin(1), rsh(1), rsync(1), scp(1), sftp(1), tar(1), inet(4P), inet6(4P), ip6(4P), hosts.equiv(5), attributes(7), in.rshd(8)


rcp is meant to copy between different hosts. Attempting to rcp a file onto itself, as with:

example% rcp tmp/file myhost:/tmp/file

results in a severely corrupted file.

rcp might not correctly fail when the target of a copy is a file instead of a directory.

rcp can become confused by output generated by commands in a $HOME/.profile or other shell startup file on the remote host.

rcp requires that the source host have permission to execute commands on the remote host when doing third-party copies.

rcp does not properly handle symbolic links. Use rsync(1), or tar(1) or cpio(1) piped to ssh to obtain remote copies of directories containing symbolic links or named pipes.

If you forget to quote metacharacters intended for the remote host, you get an incomprehensible error message.

rcp fails if you copy ACLs to a file system that does not support ACLs.

rcp is CSI-enabled except for the handling of username, hostname, and domain.

When rcp is used to perform third-party copies where either of the remote machines is not running Solaris, the exit code cannot be relied upon. That is, errors could occur when success is reflected in the exit code, or the copy could be completely successful even though an error is reflected in the exit code.

This technology may be removed in a future release of Oracle Solaris.


Support for Kerberos, including the options –a, –k, –K, –PN, –PO, and –x, was added in Solaris 10 3/05 and removed in Oracle Solaris 11.4.0. Prior to Solaris 10, a kerberized version was available in the Sun Enterprise Authentication Mechanism (SEAM) add-on package for Solaris.

Support for IPv6 was added in Solaris 8.

The rcp command, including support for the options –p and –r, has been present since the initial release of Solaris.