uucp(1)

๐Ÿ“ฆ
version 1.07 ยท 3 versions
, in debian bookworm, debian trixie, ubuntu jammy, ubuntu noble, ubuntu questing, ubuntu resolute, ubuntu stonking

๐Ÿ’– uucp โ€” the Unix to Unix copy manual page, bestie edition ๐Ÿ’–

okay so you opened the manual for uucp (that's the General Commands Manual section 1, iykyk) and honestly? iconic little tool. it copies files between systems. let's get into it ๐Ÿซถ


โœจ NAME โœจ

uucp โ€” Unix to Unix copy. that's it, that's the name, short and slay ๐Ÿ’…


๐Ÿฆ‹ SYNOPSIS ๐Ÿฆ‹

uucp [ options ] source-file destination-file

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

two whole modes. one file to one file, or a whole lil squad of files into a directory. pick your fighter โœจ


๐ŸŒธ DESCRIPTION ๐ŸŒธ

so like, uucp copies files between systems. not me explaining the obvious but here we are ๐Ÿ’€

every file argument is either a pathname on your local machine, or it looks like this:

system!path

and that means "this thing lives on a remote system, bestie." first form of the synopsis: the contents of the first file get copied to the second. second form: every source file gets copied into the destination directory. simple as ๐ŸŽ€

you can also bounce a file to or from system2 via system1 by writing:

system1!system2!path.

(that trailing period is right there in the original, bestie, i don't make the rules ๐Ÿ™ˆ)

any pathname that does not start with / or ~ gets appended to the current directory (unless you're using -W or --noexpand). and lowkey important: that resulting path will not necessarily exist on a remote system. so don't be shocked. ๐Ÿ’€

a pathname starting with a plain ~ starts at the UUCP public directory. a pathname starting with ~name starts at the home directory of that named user. the ~ gets interpreted on the appropriate system, which is the whole vibe. โš ๏ธ but heads up โ€” some shells will interpret a plain ~ to your local home directory before uucp even sees it. to dodge that, the ~ must be quoted. periodt.

shell metacharacters ?, *, [, ] are interpreted on the appropriate system โ€” assuming you quoted them so the shell doesn't snatch them first. quote your stuff, bestie ๐Ÿซถ

and now the part everyone skips: the copy does not happen immediately. it's queued up for the uucico (8) daemon. the daemon gets started immediately unless you pass -r or --nouucico. either way, the next time the remote system is called, the file(s) will be copied. it's giving "we'll get to it" energy โœจ


๐Ÿ’… OPTIONS ๐Ÿ’…

here's the full menu, bestie. no skips, no cuts, every single one:

  • -c, --nocopy โ€” do NOT copy local source files to the spool directory. if they get removed before the uucico (8) daemon processes them, the copy fails. the files have to be readable by the uucico (8) daemon and by the invoking user. this is the default. ๐Ÿ‘‘
  • -C, --copy โ€” copy local source files to the spool directory. the opposite of the above, obviously.
  • -d, --directories โ€” create all necessary directories when doing the copy. also the default. โœจ
  • -f, --nodirectories โ€” if any necessary directories don't exist for the destination path, abort the copy. no dirs, no deal. ๐Ÿ’€
  • -R, --recursive โ€” if any of the source file names are directories, copy their contents recursively to the destination. and the destination must itself be a directory. no exceptions, bestie.
  • -g grade, --grade grade โ€” set the grade of the file transfer command. jobs of a higher grade get executed first. grades run 0 ... 9 A ... Z a ... z from high to low. yes it goes numbers then uppercase then lowercase, that's the whole alphabet situation ๐ŸŽ€
  • -m, --mail โ€” report completion or failure of the file transfer by mail (1). so you'll know. ๐Ÿซถ
  • -n user, --notify user โ€” report completion or failure of the file transfer by mail (1) to the named user on the remote system. (different from -m, note the remote part!)
  • -r, --nouucico โ€” do NOT start the uucico (8) daemon immediately; just queue up the file transfer for later execution. chill mode ๐Ÿ˜Œ
  • -j, --jobid โ€” print jobid on standard output. you can cancel the job later by passing that jobid to the -k switch of uustat (1). โš ๏ธ heads up: some complex operations can produce more than one jobid, and in that case each one gets printed on its own 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. two jobs, one command, main character energy ๐Ÿ‘‘

  • -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 makes uucp interpret the final argument as system!user. the file(s) are sent to ~/receive/USER/LOCAL on the remote system, where USER comes from the final argument and LOCAL is the local UUCP system name. also, uucp will act as though --notify user were specified. sneaky lil combo move ๐Ÿ’…
  • -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. you can also give a number, which turns on that many types from the list above โ€” for example, --debug 2 is equivalent to --debug abnormal,chat. cute shortcut fr fr โœจ
  • -I file, --config file โ€” set configuration file to use. โš ๏ธ this option may not be available, depending on how uucp was compiled. so like, vibe check your build first ๐Ÿ™ˆ
  • -v, --version โ€” report version information and exit.
  • --help โ€” print a help message and exit. the classic ๐Ÿซถ

๐ŸŒˆ SEE ALSO ๐ŸŒˆ

mail (1), uux (1), uustat (1), uucico (8)

go read those too, they're all part of the fam ๐Ÿ’œ


๐Ÿ’€ BUGS ๐Ÿ’€

not me delivering the drama, but we gotta be honest:

  • some of the options depend on the capabilities of the uucico (8) daemon on the remote system. so it's not entirely up to you, bestie. remote system said "we'll see" ๐Ÿ˜ญ
  • the -n and -m switches do not work when transferring a file from one remote system to another. literally don't work. nope.
  • file modes are not preserved, except for the execute bit. and the resulting file is owned by the uucp user. so don't come for your permissions, they're gone. ๐Ÿ™ˆ

๐Ÿ‘‘ AUTHOR ๐Ÿ‘‘

Ian Lance Taylor <ian@airs.com> โ€” thank you for your service, king ๐Ÿซถ


and that's the whole page, bestie!! this was Taylor UUCP 1.07 energy from start to finish ๐Ÿ’– go copy some files between systems and slay, no cap โœจ๐ŸŽ€๐Ÿฆ‹

๐Ÿ“ฆ where this page comes from