rclone/docs/content/ftp.md

272 lines
6.9 KiB
Markdown
Raw Normal View History

2016-12-27 21:52:30 +01:00
---
title: "FTP"
description: "Rclone docs for FTP backend"
---
{{< icon "fa fa-file" >}} FTP
2016-12-27 21:52:30 +01:00
------------------------------
FTP is the File Transfer Protocol. 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.
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.
Here is an example of making an FTP configuration. First run
2016-12-27 21:52:30 +01:00
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.
2016-12-27 21:52:30 +01:00
```
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, $USER
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>
Use FTP over TLS (Explicit)
Enter a boolean value (true or false). Press Enter for the default ("false").
explicit_tls>
Remote config
--------------------
2016-12-27 21:52:30 +01:00
[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
2016-12-27 21:52:30 +01:00
```
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 -i /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.
2020-05-16 21:28:15 +02:00
### 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`
2019-07-27 17:58:33 +02:00
#### Restricted filename characters
In addition to the [default restricted characters set](/overview/#restricted-characters)
the following characters are also replaced:
File names can also not end with the following characters.
2020-05-26 01:30:30 +02:00
These only get replaced if they are the last character in the name:
2019-07-27 17:58:33 +02:00
| 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
2020-05-19 13:02:44 +02:00
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
2019-06-15 13:01:29 +02:00
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
2020-09-02 17:59:04 +02:00
**NB** Input to this must be obscured - see [rclone obscure](/commands/rclone_obscure/).
- Config: pass
- Env Var: RCLONE_FTP_PASS
- Type: string
- Default: ""
2019-06-15 13:01:29 +02:00
#### --ftp-tls
2020-09-02 17:59:04 +02:00
Use FTPS over TLS (Implicit)
When using implicit FTP over TLS the client will connect using TLS
right from the start, which in turn breaks the compatibility with
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
#### --ftp-explicit-tls
Use FTP over TLS (Explicit)
When using explicit FTP over TLS the client explicitly request
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
- Type: bool
- Default: false
2019-04-13 12:01:58 +02:00
### 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
2019-06-15 13:01:29 +02:00
#### --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
2019-10-26 12:04:54 +02:00
#### --ftp-disable-epsv
Disable using EPSV even if server advertises support
- Config: disable_epsv
- Env Var: RCLONE_FTP_DISABLE_EPSV
- Type: bool
- Default: false
2020-02-01 11:31:42 +01:00
#### --ftp-encoding
This sets the encoding for the backend.
See: the [encoding section in the overview](/overview/#encoding) 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 FTP does have its own implementation of : `--dump headers`,
`--dump bodies`, `--dump auth` for debugging which isn't the same as
the HTTP based backends - it has less fine grained control.
2016-12-27 21:52:30 +01:00
2017-05-18 17:20:26 +02:00
Note that `--timeout` isn't supported (but `--contimeout` is).
2016-12-27 21:52:30 +01:00
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.