uucp(1)
๐ 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 theuucico(8) daemon processes them, the copy fails. the files have to be readable by theuucico(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.-ggrade,--gradegrade โ set the grade of the file transfer command. jobs of a higher grade get executed first. grades run0 ... 9 A ... Z a ... zfrom 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 bymail(1). so you'll know. ๐ซถ-nuser,--notifyuser โ report completion or failure of the file transfer bymail(1) to the named user on the remote system. (different from-m, note the remote part!)-r,--nouucicoโ do NOT start theuucico(8) daemon immediately; just queue up the file transfer for later execution. chill mode ๐-j,--jobidโ printjobidon standard output. you can cancel the job later by passing thatjobidto the-kswitch ofuustat(1). โ ๏ธ heads up: some complex operations can produce more than onejobid, 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 theuutoshell script. it makesuucpinterpret the final argument assystem!user. the file(s) are sent to~/receive/USER/LOCALon the remote system, whereUSERcomes from the final argument andLOCALis the local UUCP system name. also,uucpwill act as though--notify userwere specified. sneaky lil combo move ๐-xtype,--debugtype โ turn on particular debugging types. the following types are recognized:abnormal,chat,handshake,uucp-proto,proto,port,config,spooldir,execute,incoming,outgoing. โ ๏ธ onlyabnormal,config,spooldirandexecuteare meaningful foruucp. multiple types may be given separated by commas, and the--debugoption may appear multiple times. you can also give a number, which turns on that many types from the list above โ for example,--debug 2is equivalent to--debug abnormal,chat. cute shortcut fr fr โจ-Ifile,--configfile โ set configuration file to use. โ ๏ธ this option may not be available, depending on howuucpwas 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
-nand-mswitches 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
uucpuser. 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
- debian bookworm: uucp 1.07-27+b2 ยท GPL-2.0-only
- debian trixie: uucp 1.07-30 ยท GPL-2.0-only
- ubuntu jammy: uucp 1.07-27build3 ยท GPL-2.0-only
- ubuntu noble: uucp 1.07-29 ยท GPL-2.0-only
- ubuntu questing: uucp 1.07-31
- ubuntu resolute: uucp 1.07-31build1 ยท GPL-2.0-only
- ubuntu stonking: uucp 1.07-31build1 ยท GPL-2.0-only
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms