2016-12-27 21:52:30 +01:00
|
|
|
---
|
|
|
|
title: "FTP"
|
|
|
|
description: "Rclone docs for FTP backend"
|
|
|
|
---
|
|
|
|
|
2021-07-20 20:45:41 +02:00
|
|
|
# {{< icon "fa fa-file" >}} FTP
|
2016-12-27 21:52:30 +01:00
|
|
|
|
2020-10-30 15:59:36 +01:00
|
|
|
FTP is the File Transfer Protocol. Rclone FTP support is provided using the
|
2016-12-27 21:52:30 +01:00
|
|
|
[github.com/jlaffaye/ftp](https://godoc.org/github.com/jlaffaye/ftp)
|
|
|
|
package.
|
|
|
|
|
2021-10-05 13:17:41 +02:00
|
|
|
[Limitations of Rclone's FTP backend](#limitations)
|
2020-10-30 15:59:36 +01:00
|
|
|
|
2020-07-15 16:27:47 +02:00
|
|
|
Paths are specified as `remote:path`. If the path does not begin with
|
|
|
|
a `/` it is relative to the home directory of the user. An empty path
|
|
|
|
`remote:` refers to the user's home directory.
|
|
|
|
|
2021-10-14 15:40:18 +02:00
|
|
|
## Configuration
|
|
|
|
|
2020-10-30 15:59:36 +01:00
|
|
|
To create an FTP configuration named `remote`, run
|
2016-12-27 21:52:30 +01:00
|
|
|
|
2017-05-03 22:45:01 +02:00
|
|
|
rclone config
|
|
|
|
|
2020-10-30 15:59:36 +01:00
|
|
|
Rclone config guides you through an interactive setup process. A minimal
|
|
|
|
rclone FTP remote definition only requires host, username and password.
|
|
|
|
For an anonymous FTP server, use `anonymous` as username and your email
|
|
|
|
address as password.
|
2016-12-27 21:52:30 +01:00
|
|
|
|
|
|
|
```
|
2021-11-01 21:34:46 +01:00
|
|
|
No remotes found, make a new one?
|
2017-05-03 22:45:01 +02:00
|
|
|
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.
|
2019-05-20 02:26:40 +02:00
|
|
|
Enter a string value. Press Enter for the default ("").
|
2017-05-03 22:45:01 +02:00
|
|
|
Choose a number from below, or type in your own value
|
2019-05-20 02:26:40 +02:00
|
|
|
[snip]
|
2019-08-26 11:47:17 +02:00
|
|
|
XX / FTP Connection
|
2017-05-03 22:45:01 +02:00
|
|
|
\ "ftp"
|
2019-05-20 02:26:40 +02:00
|
|
|
[snip]
|
2017-05-03 22:45:01 +02:00
|
|
|
Storage> ftp
|
2019-05-20 02:26:40 +02:00
|
|
|
** See help for ftp backend at: https://rclone.org/ftp/ **
|
|
|
|
|
2017-05-25 00:24:46 +02:00
|
|
|
FTP host to connect to
|
2019-05-20 02:26:40 +02:00
|
|
|
Enter a string value. Press Enter for the default ("").
|
2017-05-25 00:24:46 +02:00
|
|
|
Choose a number from below, or type in your own value
|
|
|
|
1 / Connect to ftp.example.com
|
|
|
|
\ "ftp.example.com"
|
|
|
|
host> ftp.example.com
|
2021-09-11 18:29:57 +02:00
|
|
|
FTP username
|
|
|
|
Enter a string value. Press Enter for the default ("$USER").
|
2019-05-20 02:26:40 +02:00
|
|
|
user>
|
2021-09-11 18:29:57 +02:00
|
|
|
FTP port number
|
|
|
|
Enter a signed integer. Press Enter for the default (21).
|
2019-05-20 02:26:40 +02:00
|
|
|
port>
|
2017-05-25 00:24:46 +02:00
|
|
|
FTP password
|
2017-05-03 22:45:01 +02:00
|
|
|
y) Yes type in my own password
|
|
|
|
g) Generate random password
|
|
|
|
y/g> y
|
|
|
|
Enter the password:
|
|
|
|
password:
|
|
|
|
Confirm the password:
|
|
|
|
password:
|
2019-05-20 02:26:40 +02:00
|
|
|
Use FTP over TLS (Implicit)
|
|
|
|
Enter a boolean value (true or false). Press Enter for the default ("false").
|
|
|
|
tls>
|
2020-05-30 16:02:35 +02:00
|
|
|
Use FTP over TLS (Explicit)
|
|
|
|
Enter a boolean value (true or false). Press Enter for the default ("false").
|
|
|
|
explicit_tls>
|
2017-05-03 22:45:01 +02:00
|
|
|
Remote config
|
|
|
|
--------------------
|
2016-12-27 21:52:30 +01:00
|
|
|
[remote]
|
2019-05-20 02:26:40 +02:00
|
|
|
type = ftp
|
2017-05-25 00:24:46 +02:00
|
|
|
host = ftp.example.com
|
|
|
|
pass = *** ENCRYPTED ***
|
2017-05-03 22:45:01 +02:00
|
|
|
--------------------
|
|
|
|
y) Yes this is OK
|
|
|
|
e) Edit this remote
|
|
|
|
d) Delete this remote
|
|
|
|
y/e/d> y
|
2016-12-27 21:52:30 +01:00
|
|
|
```
|
|
|
|
|
2020-10-30 15:59:36 +01:00
|
|
|
To see all directories in the home directory of `remote`
|
2017-05-03 22:45:01 +02:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
2020-06-05 18:04:23 +02:00
|
|
|
rclone sync -i /home/local/directory remote:directory
|
2017-05-03 22:45:01 +02:00
|
|
|
|
2020-10-30 15:59:36 +01:00
|
|
|
### Example without a config file ###
|
2020-05-16 21:28:15 +02:00
|
|
|
|
|
|
|
rclone lsf :ftp: --ftp-host=speedtest.tele2.net --ftp-user=anonymous --ftp-pass=`rclone obscure dummy`
|
|
|
|
|
2019-05-20 02:26:40 +02:00
|
|
|
### Implicit TLS ###
|
|
|
|
|
2020-10-30 15:59:36 +01:00
|
|
|
Rlone FTP supports implicit FTP over TLS servers (FTPS). This has to
|
|
|
|
be enabled in the FTP backend config for the remote, or with
|
2021-02-10 19:18:01 +01:00
|
|
|
[`--ftp-tls`](#ftp-tls). The default FTPS port is `990`, not `21` and
|
|
|
|
can be set with [`--ftp-port`](#ftp-port).
|
2019-05-20 02:26:40 +02:00
|
|
|
|
2021-10-14 15:40:18 +02:00
|
|
|
### Restricted filename characters
|
|
|
|
|
|
|
|
In addition to the [default restricted characters set](/overview/#restricted-characters)
|
|
|
|
the following characters are also replaced:
|
|
|
|
|
|
|
|
File names cannot end with the following characters. Repacement is
|
|
|
|
limited to the last character in a file name:
|
|
|
|
|
|
|
|
| Character | Value | Replacement |
|
|
|
|
| --------- |:-----:|:-----------:|
|
|
|
|
| SP | 0x20 | ␠ |
|
|
|
|
|
|
|
|
Not all FTP servers can have all characters in file names, for example:
|
|
|
|
|
|
|
|
| FTP Server| Forbidden characters |
|
|
|
|
| --------- |:--------------------:|
|
|
|
|
| proftpd | `*` |
|
|
|
|
| pureftpd | `\ [ ]` |
|
|
|
|
|
|
|
|
This backend's interactive configuration wizard provides a selection of
|
|
|
|
sensible encoding settings for major FTP servers: ProFTPd, PureFTPd, VsFTPd.
|
|
|
|
Just hit a selection number when prompted.
|
|
|
|
|
2020-05-22 13:22:52 +02:00
|
|
|
{{< rem autogenerated options start" - DO NOT EDIT - instead edit fs.RegInfo in backend/ftp/ftp.go then run make backenddocs" >}}
|
2021-11-01 16:42:05 +01:00
|
|
|
### Standard options
|
2018-10-01 21:48:54 +02:00
|
|
|
|
|
|
|
Here are the standard options specific to ftp (FTP Connection).
|
|
|
|
|
|
|
|
#### --ftp-host
|
|
|
|
|
2021-11-01 16:42:05 +01:00
|
|
|
FTP host to connect to.
|
|
|
|
|
|
|
|
E.g. "ftp.example.com".
|
2018-10-01 21:48:54 +02:00
|
|
|
|
|
|
|
- Config: host
|
|
|
|
- Env Var: RCLONE_FTP_HOST
|
|
|
|
- Type: string
|
|
|
|
- Default: ""
|
|
|
|
|
|
|
|
#### --ftp-user
|
|
|
|
|
2021-11-01 16:42:05 +01:00
|
|
|
FTP username, leave blank for current username, $USER.
|
2018-10-01 21:48:54 +02:00
|
|
|
|
|
|
|
- Config: user
|
|
|
|
- Env Var: RCLONE_FTP_USER
|
|
|
|
- Type: string
|
|
|
|
- Default: ""
|
|
|
|
|
|
|
|
#### --ftp-port
|
|
|
|
|
2021-11-01 16:42:05 +01:00
|
|
|
FTP port, leave blank to use default (21).
|
2018-10-01 21:48:54 +02:00
|
|
|
|
|
|
|
- Config: port
|
|
|
|
- Env Var: RCLONE_FTP_PORT
|
|
|
|
- Type: string
|
|
|
|
- Default: ""
|
|
|
|
|
|
|
|
#### --ftp-pass
|
|
|
|
|
2021-11-01 16:42:05 +01:00
|
|
|
FTP password.
|
2018-10-01 21:48:54 +02:00
|
|
|
|
2020-09-02 17:59:04 +02:00
|
|
|
**NB** Input to this must be obscured - see [rclone obscure](/commands/rclone_obscure/).
|
|
|
|
|
2018-10-01 21:48:54 +02:00
|
|
|
- Config: pass
|
|
|
|
- Env Var: RCLONE_FTP_PASS
|
|
|
|
- Type: string
|
|
|
|
- Default: ""
|
|
|
|
|
2021-03-26 22:13:03 +01:00
|
|
|
#### --ftp-ask-password
|
|
|
|
|
|
|
|
Ask for password when connecting to a FTP server and no password is configured.
|
|
|
|
|
|
|
|
- Config: ask_password
|
|
|
|
- Env Var: RCLONE_FTP_ASK_PASSWORD
|
|
|
|
- Type: bool
|
|
|
|
- Default: false
|
|
|
|
|
2019-06-15 13:01:29 +02:00
|
|
|
#### --ftp-tls
|
|
|
|
|
2021-11-01 16:42:05 +01:00
|
|
|
Use Implicit FTPS (FTP over TLS).
|
|
|
|
|
2021-02-02 14:42:35 +01:00
|
|
|
When using implicit FTP over TLS the client connects using TLS
|
|
|
|
right from the start which breaks compatibility with
|
2020-05-30 16:02:35 +02:00
|
|
|
non-TLS-aware servers. This is usually served over port 990 rather
|
|
|
|
than port 21. Cannot be used in combination with explicit FTP.
|
|
|
|
|
2019-06-15 13:01:29 +02:00
|
|
|
- Config: tls
|
|
|
|
- Env Var: RCLONE_FTP_TLS
|
|
|
|
- Type: bool
|
|
|
|
- Default: false
|
|
|
|
|
2020-05-30 16:02:35 +02:00
|
|
|
#### --ftp-explicit-tls
|
|
|
|
|
2021-11-01 16:42:05 +01:00
|
|
|
Use Explicit FTPS (FTP over TLS).
|
|
|
|
|
2021-02-02 14:42:35 +01:00
|
|
|
When using explicit FTP over TLS the client explicitly requests
|
2020-05-30 16:02:35 +02:00
|
|
|
security from the server in order to upgrade a plain text connection
|
|
|
|
to an encrypted one. Cannot be used in combination with implicit FTP.
|
|
|
|
|
|
|
|
- Config: explicit_tls
|
2020-09-02 17:59:04 +02:00
|
|
|
- Env Var: RCLONE_FTP_EXPLICIT_TLS
|
2020-05-30 16:02:35 +02:00
|
|
|
- Type: bool
|
|
|
|
- Default: false
|
|
|
|
|
2021-11-01 16:42:05 +01:00
|
|
|
### Advanced options
|
2019-04-13 12:01:58 +02:00
|
|
|
|
|
|
|
Here are the advanced options specific to ftp (FTP Connection).
|
|
|
|
|
|
|
|
#### --ftp-concurrency
|
|
|
|
|
2021-11-01 16:42:05 +01:00
|
|
|
Maximum number of FTP simultaneous connections, 0 for unlimited.
|
2019-04-13 12:01:58 +02:00
|
|
|
|
|
|
|
- Config: concurrency
|
|
|
|
- Env Var: RCLONE_FTP_CONCURRENCY
|
|
|
|
- Type: int
|
|
|
|
- Default: 0
|
|
|
|
|
2019-06-15 13:01:29 +02:00
|
|
|
#### --ftp-no-check-certificate
|
|
|
|
|
2021-11-01 16:42:05 +01:00
|
|
|
Do not verify the TLS certificate of the server.
|
2019-06-15 13:01:29 +02:00
|
|
|
|
|
|
|
- Config: no_check_certificate
|
|
|
|
- Env Var: RCLONE_FTP_NO_CHECK_CERTIFICATE
|
|
|
|
- Type: bool
|
|
|
|
- Default: false
|
|
|
|
|
2019-10-26 12:04:54 +02:00
|
|
|
#### --ftp-disable-epsv
|
|
|
|
|
2021-11-01 16:42:05 +01:00
|
|
|
Disable using EPSV even if server advertises support.
|
2019-10-26 12:04:54 +02:00
|
|
|
|
|
|
|
- Config: disable_epsv
|
|
|
|
- Env Var: RCLONE_FTP_DISABLE_EPSV
|
|
|
|
- Type: bool
|
|
|
|
- Default: false
|
2021-02-02 14:42:35 +01:00
|
|
|
|
|
|
|
#### --ftp-disable-mlsd
|
|
|
|
|
2021-11-01 16:42:05 +01:00
|
|
|
Disable using MLSD even if server advertises support.
|
2021-02-02 14:42:35 +01:00
|
|
|
|
|
|
|
- Config: disable_mlsd
|
|
|
|
- Env Var: RCLONE_FTP_DISABLE_MLSD
|
|
|
|
- Type: bool
|
|
|
|
- Default: false
|
2021-03-31 20:12:08 +02:00
|
|
|
|
2021-07-23 01:04:08 +02:00
|
|
|
#### --ftp-writing-mdtm
|
|
|
|
|
|
|
|
Use MDTM to set modification time (VsFtpd quirk)
|
|
|
|
|
|
|
|
- Config: writing_mdtm
|
|
|
|
- Env Var: RCLONE_FTP_WRITING_MDTM
|
|
|
|
- Type: bool
|
|
|
|
- Default: false
|
|
|
|
|
2021-03-31 20:12:08 +02:00
|
|
|
#### --ftp-idle-timeout
|
|
|
|
|
2021-11-01 16:42:05 +01:00
|
|
|
Max time before closing idle connections.
|
2021-03-31 20:12:08 +02:00
|
|
|
|
|
|
|
If no connections have been returned to the connection pool in the time
|
|
|
|
given, rclone will empty the connection pool.
|
|
|
|
|
|
|
|
Set to 0 to keep connections indefinitely.
|
|
|
|
|
|
|
|
|
|
|
|
- Config: idle_timeout
|
|
|
|
- Env Var: RCLONE_FTP_IDLE_TIMEOUT
|
|
|
|
- Type: Duration
|
|
|
|
- Default: 1m0s
|
|
|
|
|
|
|
|
#### --ftp-close-timeout
|
|
|
|
|
|
|
|
Maximum time to wait for a response to close.
|
|
|
|
|
|
|
|
- Config: close_timeout
|
|
|
|
- Env Var: RCLONE_FTP_CLOSE_TIMEOUT
|
|
|
|
- Type: Duration
|
|
|
|
- Default: 1m0s
|
2019-10-26 12:04:54 +02:00
|
|
|
|
2021-11-01 16:42:05 +01:00
|
|
|
#### --ftp-tls-cache-size
|
|
|
|
|
|
|
|
Size of TLS session cache for all control and data connections.
|
|
|
|
|
|
|
|
TLS cache allows to resume TLS sessions and reuse PSK between connections.
|
|
|
|
Increase if default size is not enough resulting in TLS resumption errors.
|
|
|
|
Enabled by default. Use 0 to disable.
|
|
|
|
|
|
|
|
- Config: tls_cache_size
|
|
|
|
- Env Var: RCLONE_FTP_TLS_CACHE_SIZE
|
|
|
|
- Type: int
|
|
|
|
- Default: 32
|
|
|
|
|
|
|
|
#### --ftp-disable-tls13
|
|
|
|
|
|
|
|
Disable TLS 1.3 (workaround for FTP servers with buggy TLS)
|
|
|
|
|
|
|
|
- Config: disable_tls13
|
|
|
|
- Env Var: RCLONE_FTP_DISABLE_TLS13
|
|
|
|
- Type: bool
|
|
|
|
- Default: false
|
|
|
|
|
|
|
|
#### --ftp-shut-timeout
|
|
|
|
|
|
|
|
Maximum time to wait for data connection closing status.
|
|
|
|
|
|
|
|
- Config: shut_timeout
|
|
|
|
- Env Var: RCLONE_FTP_SHUT_TIMEOUT
|
|
|
|
- Type: Duration
|
|
|
|
- Default: 1m0s
|
|
|
|
|
2020-02-01 11:31:42 +01:00
|
|
|
#### --ftp-encoding
|
|
|
|
|
|
|
|
This sets the encoding for the backend.
|
|
|
|
|
2021-11-01 16:42:05 +01:00
|
|
|
See the [encoding section in the overview](/overview/#encoding) for more info.
|
2020-02-01 11:31:42 +01:00
|
|
|
|
|
|
|
- Config: encoding
|
|
|
|
- Env Var: RCLONE_FTP_ENCODING
|
|
|
|
- Type: MultiEncoder
|
|
|
|
- Default: Slash,Del,Ctl,RightSpace,Dot
|
2021-07-23 01:01:17 +02:00
|
|
|
- Examples:
|
|
|
|
- "Asterisk,Ctl,Dot,Slash"
|
|
|
|
- ProFTPd can't handle '*' in file names
|
|
|
|
- "BackSlash,Ctl,Del,Dot,RightSpace,Slash,SquareBracket"
|
|
|
|
- PureFTPd can't handle '[]' or '*' in file names
|
|
|
|
- "Ctl,LeftPeriod,Slash"
|
|
|
|
- VsFTPd can't handle file names starting with dot
|
2020-02-01 11:31:42 +01:00
|
|
|
|
2020-05-22 13:22:52 +02:00
|
|
|
{{< rem autogenerated options stop >}}
|
2018-10-01 19:36:15 +02:00
|
|
|
|
2021-10-14 15:40:18 +02:00
|
|
|
## Limitations
|
2021-10-05 13:17:41 +02:00
|
|
|
|
|
|
|
FTP servers acting as rclone remotes must support `passive` mode.
|
|
|
|
The mode cannot be configured as `passive` is the only supported one.
|
|
|
|
Rclone's FTP implementation is not compatible with `active` mode
|
|
|
|
as [the library it uses doesn't support it](https://github.com/jlaffaye/ftp/issues/29).
|
|
|
|
This will likely never be supported due to security concerns.
|
2017-05-03 22:45:01 +02:00
|
|
|
|
2020-10-30 15:59:36 +01:00
|
|
|
Rclone's FTP backend does not support any checksums but can compare
|
|
|
|
file sizes.
|
|
|
|
|
2020-11-23 17:34:27 +01:00
|
|
|
`rclone about` is not supported by the FTP backend. Backends without
|
|
|
|
this capability cannot determine free space for an rclone mount or
|
|
|
|
use policy `mfs` (most free space) as a member of an rclone union
|
2020-11-27 15:08:52 +01:00
|
|
|
remote.
|
|
|
|
|
|
|
|
See [List of backends that do not support rclone about](https://rclone.org/overview/#optional-features)
|
|
|
|
See [rclone about](https://rclone.org/commands/rclone_about/)
|
2020-11-23 17:34:27 +01:00
|
|
|
|
2020-10-30 15:59:36 +01:00
|
|
|
The implementation of : `--dump headers`,
|
|
|
|
`--dump bodies`, `--dump auth` for debugging isn't the same as
|
|
|
|
for rclone HTTP based backends - it has less fine grained control.
|
|
|
|
|
|
|
|
`--timeout` isn't supported (but `--contimeout` is).
|
|
|
|
|
|
|
|
`--bind` isn't supported.
|
|
|
|
|
|
|
|
Rclone's FTP backend could support server-side move but does not
|
|
|
|
at present.
|
|
|
|
|
|
|
|
The `ftp_proxy` environment variable is not currently supported.
|
2021-07-23 01:04:08 +02:00
|
|
|
|
|
|
|
#### Modified time
|
|
|
|
|
|
|
|
File modification time (timestamps) is supported to 1 second resolution
|
|
|
|
for major FTP servers: ProFTPd, PureFTPd, VsFTPd, and FileZilla FTP server.
|
|
|
|
The `VsFTPd` server has non-standard implementation of time related protocol
|
|
|
|
commands and needs a special configuration setting: `writing_mdtm = true`.
|
|
|
|
|
|
|
|
Support for precise file time with other FTP servers varies depending on what
|
|
|
|
protocol extensions they advertise. If all the `MLSD`, `MDTM` and `MFTM`
|
|
|
|
extensions are present, rclone will use them together to provide precise time.
|
|
|
|
Otherwise the times you see on the FTP server through rclone are those of the
|
|
|
|
last file upload.
|
|
|
|
|
|
|
|
You can use the following command to check whether rclone can use precise time
|
|
|
|
with your FTP server: `rclone backend features your_ftp_remote:` (the trailing
|
|
|
|
colon is important). Look for the number in the line tagged by `Precision`
|
|
|
|
designating the remote time precision expressed as nanoseconds. A value of
|
|
|
|
`1000000000` means that file time precision of 1 second is available.
|
|
|
|
A value of `3153600000000000000` (or another large number) means "unsupported".
|