Uwe Ohse homepage

The ftpcopy package


NAME

ftpcopy - mirror or copy files from a FTP server


SYNOPSIS

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

or

ftpcopy host[:post] /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. Otherwise you must provide the local-directory argument.


OPTIONS

LOGIN OPTIONS

--tries=NUMBER
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.

--account=ACCOUNT
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.

-p, --pass=PASSWORD
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.

-u, --user=NAME
Use NAME to login on the ftp server. The default is `anonymous'. Use an empty name to force to not log in.

FILE SELECTION

-d, --directories-only
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).

-m, --max-days=NUMBER
download only files modified in the last NUMBER days.

-x, --exclude=WILDCARD
Exclude files and directories matching WILDCARD (note that this means shell style wildcards, not regular expression like those of grep). You can repeat that option as often as you want. You can intermix it with the -i option.

-i, --include=WILDCARD
Include files and directories matching WILDCARD. You can repeat that option as often as you want. You can intermix it with the -x option.

This option was added in version 0.3.0.

OTHER OPTIONS

-l, --loglevel=NUMBER
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.

-L, --list-options=OPTS
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.

-n, --no-delete
do not delete files. This influences the cleanup step, it doesn't stop ftpcopy from deleting files during the downloads.

-R, --remove-dir
Remove directories which are `in our way'. If an existing local directory blocks the operation because it has to be replaced by something else (a symbolic link or a file) then this option will allow ftpcopy to delete the local directory recursivly. Note that this option is currently not the default, but may be the default in a few months.

This option was added in version 0.3.0.

--keep-dir
Keep directories, even it they are blocking our operation. Note that ftpcopy will not continue in that case. This option is currently the default, but that may change.

This option was added in version 0.3.0.

-s, --symlink-hack
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.


INCLUDE AND 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

mirror cr.yp.to

        ftpcopy  \
        --exclude '*.cdb'  \
        --exclude '*software/precompiled*' \
        cr.yp.to / /private/file/0/mirror/cr.yp.to

This means:

mirror ftp.gnu.org


AUTHOR

Uwe Ohse, uwe@ohse.de


SEE ALSO

ftpls(1), ftpcp(1)