ftpcopy(1)

NAME
ftpcopy - mirror or copy files from a FTP server

SYNOPSIS
ftpcopy ftp://host[:port]/directory [local-directory] or ftpcopy host[:port] /directory [local-directory]

DESCRIPTION
ftpcopy copies a FTP site recursivly. It afterwards deletes all files in the local directory tree which were not found on the remote site. local-directory defaults to "." - the current working directory - if the -n (--no-delete) option is used. local-directory is not needed if the --interactive option is used. Otherwise you must provide a local-directory argument.

OPTIONS
Use NAME to login on the ftp server. The default is `anonymous'. Use an empty name to force to not log in. Use PASS as password to login on the ftp server. The default is `anonymous@invalid.example'. Use an empty password to enforce not sending any password. Send ACCOUNT as the account name using the ACCT ftp command if the ftp servers asks for one. ACCOUNT in ftp speak is some kind of sub account in some other terminologies. If you don't understand what it means you have a good chance to never need this option anyway. If you think you need it please try the -u option first. Number of tries to connect and log in. The default is 1, meaning that ftpls will give up after the first error. This option was added in version 0.3.0. ftpcopy will sleep for NUMBER seconds after a try to connect or login has failed. The default is 5, a zero is treated as one, and abuse (especially together with --tries) is likely to annoy the server administrator. This option was added in version 0.4.5. this controls the amount of logging done: 0: nothing except warnings and error messages 1: downloads and deletes 2: links/symlinks created, files we already got 3: useless stuff The default is 1. Log transfer rates. This option was added in version 0.3.9. Download only files modified in the last NUMBER days. Exclude files and directories matching WILDCARD (note that this means shell style wildcards, not regular expression like those of grep).
You can repeat this option as often as you want. You can intermix it with the -i option.
See below, for more information. This option was added in version 0.3.0. Include files and directories matching WILDCARD. You can repeat this option as often as you want. You can intermix it with the -x option.
See below, for more information. This option was added in version 0.3.0. Do not compare file sizes when checking the remote file has to be downloaded. This option was added in version 0.4.4. Do not compare file modification times when checking the remote file has to be downloaded. This option may be combined with --ignore-size, in which case a file will never be downloaded regardless of changes in file size or modification time. In other words: ftpcopy will not download any updates. This option was added in version 0.4.4. Do not delete files. This influences the cleanup step at the end, when ftpcopy removes files not found on the server. It doesn't stop ftpcopy from deleting files when it detects something in it's way during a download. Do not delete more then COUNT files. This option may be useful to limit the impact of a tempoary loss of files on the server. The default is 0, meaning unlimited. This, too, only influences the cleanup step. This option was added in version 0.4.5. Only create the directory hierarchie, do not download files. Any file in the tree will be deleted unless the -n option is also given. Note: if the -s option is also given then even symbolic links to files will be created (without the files, of course). Do not copy or delete files: Only show what would be done. This option was added in version 0.3.6. Timeout to use for network read/write and connect operations. The default is 30 seconds and is usually sufficient. This option was added in version 0.3.8. Limit the transfer rate of file downloads to about that many bytes per seconds. The implementation is crude and simple, by sleeping up to one second between network reads, and therefore does not even try to limit the rate exactly to that number. On the other hand it usually works and is unlikely to break things by causing timeouts. This option was added in version 0.4.7. This option tells ftpcopy to ignore any directories given on the command line, and to read commands from the standard input. Each command consists of two lines, the first being a directory on the remote server, and the second a local directory. ftpcopy will print an END-OF-COPY line after each operation. This option was added in version 0.3.6. or "things you may need in a less than perfect world": Add OPTS to LIST command.
This allows to pass arbitrary options to the FTP servers LIST command. Note that ftpcopy does not cope well with recursive directory listings. This option was added in version 0.3.0. Deal with symbolic links. This is only useful to mirror sites which create listings through /bin/ls. This will fail if a file name in a link contains a ` -> ' sequence. Do not use the poll() system call even if it's available, but use select(). This allows ftpcopy to be used together with the runsocks program from the socks5 reference implementation. Please note that you'll need a directly reachable name server anyway, as the DNS library in use does not support SOCKS (you can always use IP addresses). This option was added in version 0.3.8. Use the MDTM FTP command to determine file modification time. The default is to take the times from the directory listings. This doesn't work if the server implements an inferior listing format (most do) and doesn't send time stamps in universal coordinated time (UTC). This option makes ftpcopy send a MDTM command for any file it might want to download. The drawback is that this eats performance: ftpcopy usually sends just one command for a complete directory its traverses. With the --mdtm option it has to send an additional command for any file. This option was added in version 0.3.10. Change all local file names to lower case. Use this only if you are absolutely sure that the remote side doesn't contain any files or directories whose names collide with each other. Otherwise this will waste bandwidth. This option was added in version 0.3.8.

REMOVED OPTIONS
These options have been added in version 0.3.0 and removed in 0.3.7. --keep-dir made ftpcopy keep a local directory even if it had been replaced by a link to an other directory or a file, --remove-dir did exactly the opposite. --keep-dir was the default for historical reasons.
The current behaviour is like that of --remove-dir: ftpcopy creates a copy of the remote ftp site.

IN/EXCLUDE
In- and exclude lists are internally mixed together, keeping the order in which they were given. The list starts with an implicit `include *'. ftpcopy honors the last match. The wildcard matching is done against the full remote path of the file. The / character has no special meaning for the matching: it is treated like any other. Note: you have to include top level directories of files or directories you want to include. Something like this will not work:
    --exclude "*" --include "/w/h/e/r/e/file.c" You need to include /w, /w/h and so on.

EXAMPLES
	ftpcopy  \
	--exclude '*.cdb'  \
	--exclude '*software/precompiled*' \
	cr.yp.to / /private/file/0/mirror/cr.yp.to
This means: i'm not interested in .cdb files. precompiled stuff is also not downloaded. the host to connect to is cr.yp.to. the remote directory is /. and /private/file/0/mirror/cr.yp.to is the local directory.

AUTHOR
Uwe Ohse, uwe@ohse.de

SEE ALSO
The homepage may be more up-to-date, see
http://www.ohse.de/uwe/ftpcopy.html.