ftpcopy



ftpcopy(1)                                                          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

   Login options
       -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.


       -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.


       --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.


       --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.


       --login-sleep=NUMBER
              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.


       -4, --v4
              Only  use  IPv4,  even  is  IPv6  is  available.   This   option
              effectively disallows the use of IPv6, except for DNS queries.

              This option was added in version 0.6.0.


       -6, --v6
              Only   use   IPv6,  even  is  IPv4  is  available.  This  option
              effectively disallows the use of IPv4, except for DNS queries.

              This option was added in version 0.6.0.



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


       --bps
          Log transfer rates.

          This option was added in version 0.3.9.


       --progress
          Report progress to the standard error output (file descriptor 2).

          This will print a report of the download every second: a short  form
          of  the  file  name,  the  bytes got and expected and the percentage
          received.

          This option was added in version 0.6.0.



   Options controlling file selection
       -m, --max-days=NUMBER
              Download only files modified in the last NUMBER  days.   Locally
              existing copies of the not downloaded files will be kept.


       --max-size=BYTES
              Download  only  files up to BYTES bytes length. Locally existing
              copies of overlong files will be  deleted  during  the  clean-up
              step.

              This option was added in version 0.5.1.


       -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  this  option  as  often  as  you want. You can
              intermix it with the -i option.
              See IN/EXCLUDE, below, for more information.

              This option was added in version 0.3.0.


       -i, --include=WILDCARD
              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 IN/EXCLUDE, below, for more information.

              This option was added in version 0.3.0.


       --ignore-size
              Do not compare file sizes when checking the remote file  has  to
              be downloaded.

              This option was added in version 0.4.4.


       --ignore-time
              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.


       --max-depth
              Descend  at  most  LEVEL directories deep.  0 means do not enter
              sub directories at all, 1 means enter sub-directories,  but  not
              their  sub-directories,  and  so  on.   The  default  is 2^32-1,
              meaning enter all.

              This option was added in version 0.5.2.



   Deletion options
       -n, --no-delete
              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.


       -m, --max-deletes=COUNT
              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.



   Operational options
       -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).


       --dry-run
              Do not copy or delete files: Only show what would be done.

              This option was added in version 0.3.6.


       -T, --timeout=SECONDS
              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.


       --rate-limit BYTES_PER_SECOND
              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.


       --interactive
              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.




   Workaround options
       or "things you may need in a less than perfect world":



       --ascii-listings
              Do  directory listings in ASCII mode instead of binary mode. Use
              this option if the  FTP  server  is  unable  to  correctly  list
              directories  in  binary  mode, for example, if you see a message
              like this (outside this manual page this usually  comes  on  one
              line):

                ftpcopy: fatal: received unwanted answer to LIST:
                426 Data connection: Illegal seek.

              This option was added in version 0.5.2.


       -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.


       -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.


       --force-select
              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.


       --mdtm
              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.


       --allow-pasv-ip
              Allow data connections to the address IP4.

              Normally  ftpcopy only accepts data connections to the addresses
              of the host it connected to. The list of addresses contains  the
              IP  addresses  of the host, as returned by the DNS query, or the
              IPv4 address of the host, in case an IPv4 address was  given  on
              the commandline.

              This option allows to add one or more IP addresses, separated by
              commas, to the internal list. It may be given more than once.

              You may want to use this option if you are behind some  kind  of
              machine  (gateway)  doing  NAT  (network address translation) or
              maquerading and  ftpcopy  prints  an  error  message  containing
              "illegal redirect by FTP server".

              Note:  If you are not behind a NAT gateway, then do not use this
              option without thinking: FTP redirects may  be  used  to  launch
              denial of service attacks against innocent targets.

              The  environment  variable  FTPCOPY_ALLOW_PASV_IP  has  the same
              function.

              This option was added in version 0.6.1.


       --no-resume
              Do not try to resume downloads.

              The REST command, needed to resume a failed download,  is  badly
              specified  and  is likely to be misinterpreted and -implemented.
              Use this option in case of trouble.

              This option was added in version 0.6.0.


       --tolower
              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

       -R, --remove-dir


       --keep-dir
              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

   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.

       *   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

       ftpls(1), ftpcp(1).

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



ftpcopy                              0.6.2                          ftpcopy(1)

Man(1) output converted with man2html