FTPCOPY(1) 19/Feb/101 FTPCOPY(1)
ftpcopy ftpcopy
0.3.5
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
- 1 - Formatted: November 3, 2025
FTPCOPY(1) 19/Feb/101 FTPCOPY(1)
ftpcopy ftpcopy
0.3.5
-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
- 2 - Formatted: November 3, 2025
FTPCOPY(1) 19/Feb/101 FTPCOPY(1)
ftpcopy ftpcopy
0.3.5
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:
+ i'm not interested in .cdb files
+ precompiled stuff is also not downloaded
- 3 - Formatted: November 3, 2025
FTPCOPY(1) 19/Feb/101 FTPCOPY(1)
ftpcopy ftpcopy
0.3.5
+ the host to connect to is cr.yp.to
+ the remote directory is /
+ the local directory is /private/file/0/mirror/cr.yp.to
mirror ftp.gnu.org
AUTHOR
Uwe Ohse, uwe@ohse.de
SEE ALSO
ftpls(1), ftpcp(1)
- 4 - Formatted: November 3, 2025