---
name: "uucp"
section: "1"
platform: "linux"
package: "uucp"
version: "1.07-8"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/uucp"
---

# uucp(1)

Unix to Unix copy

## NAME

uucp - Unix to Unix copy

## SYNOPSIS

**uucp** \[ options \] source-file destination-file

**uucp** \[ options \] source-file... destination-directory

## DESCRIPTION

The *uucp* command copies files between systems.  Each *file* argument is either a pathname on the local machine or is of the form

-

  system!path

which is interpreted as being on a remote system. In the first form, the contents of the first file are copied to the second.  In the second form, each source file is copied into the destination directory.

A file be transferred to or from *system2* via *system1* by using

-

  system1!system2!path.

Any pathname that does not begin with / or ~ will be appended to the current directory (unless the **-W** or **--noexpand** option is used); this resulting path will not necessarily exist on a remote system.  A pathname beginning with a simple ~ starts at the UUCP public directory; a pathname beginning with ~name starts at the home directory of the named user.  The ~ is interpreted on the appropriate system.  Note that some shells will interpret a simple ~ to the local home directory before *uucp* sees it; to avoid this the ~ must be quoted.

Shell metacharacters ? \* \[ \] are interpreted on the appropriate system, assuming they are quoted to prevent the shell from interpreting them first.

The copy does not take place immediately, but is queued up for the *uucico* (8) daemon; the daemon is started immediately unless the  **-r** or **--nouucico** switch is given.  In any case, the next time the remote system is called the file(s) will be copied.

## OPTIONS

The following options may be given to *uucp.*

- **-c, --nocopy**

  Do not copy local source files to the spool directory.  If they are removed before being processed by the *uucico* (8) daemon, the copy will fail.  The files must be readable by the *uucico* (8) daemon, and by the invoking user.

- **-C, --copy**

  Copy local source files to the spool directory.  This is the default.

- **-d, --directories**

  Create all necessary directories when doing the copy.  This is the default.

- **-f, --nodirectories**

  If any necessary directories do not exist for the destination path, abort the copy.

- **-R, --recursive**

  If any of the source file names are directories, copy their contents recursively to the destination (which must itself be a directory).

- **-g grade, --grade grade**

  Set the grade of the file transfer command.  Jobs of a higher grade are executed first.  Grades run 0 ... 9 A ... Z a ... z from high to low.

- **-m, --mail**

  Report completion or failure of the file transfer by *mail* (1).

- **-n user, --notify user**

  Report completion or failure of the file transfer by *mail* (1) to the named user on the remote system.

- **-r, --nouucico**

  Do not start *uucico* (8) daemon immediately; merely queue up the file transfer for later execution.

- **-j, --jobid**

  Print jobid on standard output.  The job may be later cancelled by passing the jobid to the **-k** switch of *uustat* (1). It is possible for some complex operations to produce more than one jobid, in which case each will be printed on a separate line.  For example\

  ```
  uucp sys1!~user1/file1 sys2!~user2/file2 ~user3
  ```

  will generate two separate jobs, one for the system *sys1* and one for the system *sys2.*

- **-W, --noexpand**

  Do not prepend remote relative path names with the current directory.

- **-t, --uuto**

  This option is used by the  *uuto* shell script.  It causes *uucp* to interpret the final argument as *system!user.* The file(s) are sent to *~/receive/USER/LOCAL* on the remote system, where *USER* is from the final argument and *LOCAL* is the local UUCP system name.  Also, *uucp* will act as though *--notify user* were specified.

- **-x type, --debug type**

  Turn on particular debugging types.  The following types are recognized: abnormal, chat, handshake, uucp-proto, proto, port, config, spooldir, execute, incoming, outgoing.  Only abnormal, config, spooldir and execute are meaningful for *uucp.*

  Multiple types may be given, separated by commas, and the **--debug** option may appear multiple times.  A number may also be given, which will turn on that many types from the foregoing list; for example, **--debug 2** is equivalent to **--debug abnormal,chat.**

- **-I file, --config file**

  Set configuration file to use.  This option may not be available, depending upon how *uucp* was compiled.

- **-v, --version**

  Report version information and exit.

- **--help**

  Print a help message and exit.

## SEE ALSO

[mail(1)](/mail/1.md), [uux(1)](/uux/1.md), [uustat(1)](/uustat/1.md), [uucico(8)](/uucico/8.md)

## BUGS

Some of the options are dependent on the capabilities of the *uucico* (8) daemon on the remote system.

The  *-n* and *-m* switches do not work when transferring a file from one remote system to another.

File modes are not preserved, except for the execute bit.  The resulting file is owned by the uucp user.

## AUTHOR

Ian Lance Taylor \<ian@airs.com\>
