rclone/docs/content/ftp.md
Nick Craig-Wood 74b8cbfb84 docs: set unsafe HTML parsing to false and fix raw HTML insertion
This means that markdown files can't contain <thing> any more.
2020-05-27 17:31:09 +01:00

5.9 KiB

title description date
FTP Rclone docs for FTP backend 2017-01-01

{{< icon "fa fa-file" >}} FTP

FTP is the File Transfer Protocol. FTP support is provided using the
github.com/jlaffaye/ftp
package.

Here is an example of making an FTP configuration. First run

rclone config

This will guide you through an interactive setup process. An FTP remote only
needs a host together with and a username and a password. With anonymous FTP
server, you will need to use anonymous as username and your email address as
the password.

No remotes found - make a new one
n) New remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
n/r/c/s/q> n
name> remote
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
[snip]
XX / FTP Connection
   \ "ftp"
[snip]
Storage> ftp
** See help for ftp backend at: https://rclone.org/ftp/ **

FTP host to connect to
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
 1 / Connect to ftp.example.com
   \ "ftp.example.com"
host> ftp.example.com
FTP username, leave blank for current username, ncw
Enter a string value. Press Enter for the default ("").
user> 
FTP port, leave blank to use default (21)
Enter a string value. Press Enter for the default ("").
port> 
FTP password
y) Yes type in my own password
g) Generate random password
y/g> y
Enter the password:
password:
Confirm the password:
password:
Use FTP over TLS (Implicit)
Enter a boolean value (true or false). Press Enter for the default ("false").
tls> 
Remote config
--------------------
[remote]
type = ftp
host = ftp.example.com
pass = *** ENCRYPTED ***
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y

This remote is called remote and can now be used like this

See all directories in the home directory

rclone lsd remote:

Make a new directory

rclone mkdir remote:path/to/directory

List the contents of a directory

rclone ls remote:path/to/directory

Sync /home/local/directory to the remote directory, deleting any
excess files in the directory.

rclone sync /home/local/directory remote:directory

Modified time

FTP does not support modified times. Any times you see on the server
will be time of upload.

Checksums

FTP does not support any checksums.

Usage without a config file

An example how to use the ftp remote without a config file:

rclone lsf :ftp: --ftp-host=speedtest.tele2.net --ftp-user=anonymous --ftp-pass=`rclone obscure dummy`

Restricted filename characters

In addition to the default restricted characters set
the following characters are also replaced:

File names can also not end with the following characters.
These only get replaced if they are the last character in the name:

Character Value Replacement
SP 0x20

Note that not all FTP servers can have all characters in file names, for example:

FTP Server Forbidden characters
proftpd *
pureftpd \ [ ]

Implicit TLS

FTP supports implicit FTP over TLS servers (FTPS). This has to be enabled
in the config for the remote. The default FTPS port is 990 so the
port will likely have to be explicitly set in the config for the remote.

{{< rem autogenerated options start" - DO NOT EDIT - instead edit fs.RegInfo in backend/ftp/ftp.go then run make backenddocs" >}}

Standard Options

Here are the standard options specific to ftp (FTP Connection).

--ftp-host

FTP host to connect to

  • Config: host
  • Env Var: RCLONE_FTP_HOST
  • Type: string
  • Default: ""
  • Examples:
    • "ftp.example.com"
      • Connect to ftp.example.com

--ftp-user

FTP username, leave blank for current username, $USER

  • Config: user
  • Env Var: RCLONE_FTP_USER
  • Type: string
  • Default: ""

--ftp-port

FTP port, leave blank to use default (21)

  • Config: port
  • Env Var: RCLONE_FTP_PORT
  • Type: string
  • Default: ""

--ftp-pass

FTP password

  • Config: pass
  • Env Var: RCLONE_FTP_PASS
  • Type: string
  • Default: ""

--ftp-tls

Use FTP over TLS (Implicit)

  • Config: tls
  • Env Var: RCLONE_FTP_TLS
  • Type: bool
  • Default: false

Advanced Options

Here are the advanced options specific to ftp (FTP Connection).

--ftp-concurrency

Maximum number of FTP simultaneous connections, 0 for unlimited

  • Config: concurrency
  • Env Var: RCLONE_FTP_CONCURRENCY
  • Type: int
  • Default: 0

--ftp-no-check-certificate

Do not verify the TLS certificate of the server

  • Config: no_check_certificate
  • Env Var: RCLONE_FTP_NO_CHECK_CERTIFICATE
  • Type: bool
  • Default: false

--ftp-disable-epsv

Disable using EPSV even if server advertises support

  • Config: disable_epsv
  • Env Var: RCLONE_FTP_DISABLE_EPSV
  • Type: bool
  • Default: false

--ftp-encoding

This sets the encoding for the backend.

See: the encoding section in the overview for more info.

  • Config: encoding
  • Env Var: RCLONE_FTP_ENCODING
  • Type: MultiEncoder
  • Default: Slash,Del,Ctl,RightSpace,Dot

{{< rem autogenerated options stop >}}

Limitations

Note that since FTP isn't HTTP based the following flags don't work
with it: --dump-headers, --dump-bodies, --dump-auth

Note that --timeout isn't supported (but --contimeout is).

Note that --bind isn't supported.

FTP could support server side move but doesn't yet.

Note that the ftp backend does not support the ftp_proxy environment
variable yet.

Note that while implicit FTP over TLS is supported,
explicit FTP over TLS is not.