Overview of cloud storage systems
云存储系统概述
每个云存储系统都略有不同。 Rclone 试图 提供一个统一的接口,但一些潜在的差异 显示出来。
功能
以下是每个云存储系统的主要功能概览。
Name | Hash | ModTime | Case Insensitive | Duplicate Files | MIME Type | Metadata |
---|---|---|---|---|---|---|
1Fichier | Whirlpool | - | No | Yes | R | - |
Akamai Netstorage | MD5, SHA256 | R/W | No | No | R | - |
Amazon S3 (or S3 compatible) | MD5 | R/W | No | No | R/W | RWU |
Backblaze B2 | SHA1 | R/W | No | No | R/W | - |
Box | SHA1 | R/W | Yes | No | - | - |
Citrix ShareFile | MD5 | R/W | Yes | No | - | - |
Cloudinary | MD5 | R | No | Yes | - | - |
Dropbox | DBHASH ¹ | R | Yes | No | - | - |
Enterprise File Fabric | - | R/W | Yes | No | R/W | - |
Files.com | MD5, CRC32 | DR/W | Yes | No | R | - |
FTP | - | R/W ¹⁰ | No | No | - | - |
Gofile | MD5 | DR/W | No | Yes | R | - |
Google Cloud Storage | MD5 | R/W | No | No | R/W | - |
Google Drive | MD5, SHA1, SHA256 | DR/W | No | Yes | R/W | DRWU |
Google Photos | - | - | No | Yes | R | - |
HDFS | - | R/W | No | No | - | - |
HiDrive | HiDrive ¹² | R/W | No | No | - | - |
HTTP | - | R | No | No | R | - |
iCloud Drive | - | R | No | No | - | - |
Internet Archive | MD5, SHA1, CRC32 | R/W ¹¹ | No | No | - | RWU |
Jottacloud | MD5 | R/W | Yes | No | R | RW |
Koofr | MD5 | - | Yes | No | - | - |
Linkbox | - | R | No | No | - | - |
Mail.ru Cloud | Mailru ⁶ | R/W | Yes | No | - | - |
Mega | - | - | No | Yes | - | - |
Memory | MD5 | R/W | No | No | - | - |
Microsoft Azure Blob Storage | MD5 | R/W | No | No | R/W | - |
Microsoft Azure Files Storage | MD5 | R/W | Yes | No | R/W | - |
Microsoft OneDrive | QuickXorHash ⁵ | DR/W | Yes | No | R | DRW |
OpenDrive | MD5 | R/W | Yes | Partial ⁸ | - | - |
OpenStack Swift | MD5 | R/W | No | No | R/W | - |
Oracle Object Storage | MD5 | R/W | No | No | R/W | - |
pCloud | MD5, SHA1 ⁷ | R/W | No | No | W | - |
PikPak | MD5 | R | No | No | R | - |
Pixeldrain | SHA256 | R/W | No | No | R | RW |
premiumize.me | - | - | Yes | No | R | - |
put.io | CRC-32 | R/W | No | Yes | R | - |
Proton Drive | SHA1 | R/W | No | No | R | - |
QingStor | MD5 | - ⁹ | No | No | R/W | - |
Quatrix by Maytech | - | R/W | No | No | - | - |
Seafile | - | - | No | No | - | - |
SFTP | MD5, SHA1 ² | DR/W | Depends | No | - | - |
Sia | - | - | No | No | - | - |
SMB | - | R/W | Yes | No | - | - |
SugarSync | - | - | No | No | - | - |
Storj | - | R | No | No | - | - |
Uloz.to | MD5, SHA256 ¹³ | - | No | Yes | - | - |
Uptobox | - | - | No | Yes | - | - |
WebDAV | MD5, SHA1 ³ | R ⁴ | Depends | No | - | - |
Yandex Disk | MD5 | R/W | No | No | R | - |
Zoho WorkDrive | - | - | No | No | - | - |
The local filesystem | All | DR/W | Depends | No | - | DRWU |
¹ Dropbox 支持 其自定义的哈希算法。 这是所有 4 MiB 块的 SHA256 哈希值的 SHA256 总和。
² 如果使用相同的登录方式具有 shell 访问权限,并且 md5sum
或 sha1sum
以及 echo
命令在远程服务器的 PATH
中,SFTP 支持校验和。
³ WebDAV 仅在与 Fastmail Files、Owncloud 和 Nextcloud 一起使用时支持哈希算法。
⁴ WebDAV 仅在与 Fastmail Files、Owncloud 和 Nextcloud 一起使用时支持修改时间。
⁵ QuickXorHash 是微软自己的哈希算法。
⁶ Mail.ru 使用其修改后的 SHA1 哈希算法。
⁷ pCloud 在其欧洲地区仅支持 SHA1(不支持 MD5)。
⁸ OpenDrive 使用其 Web 客户端界面或其他标准客户端时不支持创建重复文件,但底层存储平台已被确定允许创建重复文件,并且可以使用 rclone
来创建。这可能是一个错误或未被支持的功能。
⁹ 青云存储(QingStor)不支持对大于 5 GiB 的对象设置修改时间。
¹⁰ 主流的 FTP 服务器支持修改时间,其他服务器如果宣传了所需的协议扩展也支持。更多详细信息请参阅 此处。
¹¹ 互联网档案馆(Internet Archive)需要将 wait_archive
选项设置为非零值才能完全支持修改时间。
¹² HiDrive 支持 其自定义的哈希算法。 它将每个 4 KiB 块的 SHA1 哈希值分层组合成一个单一的顶级哈希值。
¹³ Uloz.to 在文件上传时提供服务器计算的 MD5 哈希值。MD5 和 SHA256 哈希值由客户端计算并存储为元数据字段。
哈希算法
云存储系统支持对象的各种哈希类型。
哈希值在传输数据时用作完整性检查,并且可以在同步操作中使用 --checksum
标志以及在 check
命令中专门使用。
要在云存储系统之间传输数据时验证校验和,它们必须支持共同的哈希类型。
修改时间
几乎所有云存储系统都会在对象上存储某种时间戳,但其中一些存储的时间戳并不适合用于同步。例如,某些后端只会写入代表上传时间的时间戳。为了使同步有意义,它应该能够存储源对象的修改时间。如果不是这种情况,rclone 默认情况下只会检查文件大小,但可以配置为检查文件哈希(使用 --checksum
标志)。理想情况下,还应该可以在不重新上传的情况下更改现有文件的时间戳。
键 | 解释 |
---|---|
- |
不支持修改时间 - 时间可能是上传时间 |
R |
文件支持修改时间,但不重新上传就无法更改 |
R/W |
文件完全支持读取和写入修改时间 |
DR |
文件和目录支持修改时间,但不重新上传就无法更改 |
DR/W |
文件和目录完全支持读取和写入修改时间 |
在修改时间列中显示 -
的存储系统意味着读取对象的修改时间不是文件上传时的修改时间。它很可能是文件上传的时间,或者可能是其他时间(如 Google 相册中照片拍摄的时间)。
在修改时间列中显示 R
(只读)的存储系统意味着它会在对象上保留修改时间,并在上传对象时更新它们,但不支持在不重新上传的情况下仅更改修改时间(SetModTime
操作),甚至可能需要先删除现有文件。rclone 中的一些操作,如 copy
和 sync
命令,会自动检查 SetModTime
支持,并在必要时重新上传以保持修改时间同步。其他命令在没有 SetModTime
支持的情况下将无法工作,例如对现有文件使用 touch
命令将失败,并且在 mount
中仅对文件的修改时间进行更改将被默默忽略。
在修改时间列中显示 R/W
(读写)的存储系统意味着它们也支持仅修改时间的操作。
修改时间列中带有 D
的存储系统表示以下符号同样适用于目录和文件。
大小写不敏感
如果云存储系统区分大小写,则可以存在仅大小写不同的两个文件,例如 file.txt
和 FILE.txt
。如果云存储系统不区分大小写,则无法这样做。
在大小写不敏感的系统和大小写敏感的系统之间进行同步时,这可能会导致问题。其症状是无论运行同步多少次,它都无法完全完成。
本地文件系统和 SFTP 是否区分大小写取决于操作系统。
- Windows - 通常不区分大小写,但会保留大小写
- OSX - 通常不区分大小写,但可以格式化为区分大小写
- Linux - 通常区分大小写,但也有不区分大小写的文件系统(例如 FAT 格式的 USB 密钥)
大多数情况下,这不会导致任何问题,因为即使在区分大小写的系统上,人们也倾向于避免使用仅大小写不同的文件名。
重复文件
如果云存储系统允许重复文件,则它可以有两个同名的对象。
这在同步时会让 rclone 非常困惑 - 可以使用 rclone dedupe
命令来重命名或删除重复文件。
受限文件名
一些云存储系统可能对文件或目录名中可使用的字符有限制。
当 rclone
在文件上传期间检测到这样的名称时,它会将受限字符透明地替换为外观相似的 Unicode 字符。为了处理不同后端的不同受限字符集,rclone 使用了一种称为 编码 的机制。
这个过程旨在尽可能避免模糊的文件名,并允许在许多云存储系统之间透明地移动文件。
rclone
显示给用户或在日志输出中显示的名称将仅包含最少的 替换字符,以确保正确的格式,而不一定是云存储上实际使用的名称。
在下载文件或解析 rclone
参数时,这种转换会被反转。例如,当将名为 my file?.txt
的文件上传到 OneDrive 时,它在控制台中会显示为 my file?.txt
,但在 OneDrive 中会存储为 my file?.txt
(?
被替换为外观相似的 ?
字符,即所谓的“全角问号”)。反向转换允许通过在命令行中传递名称 unusual/name.txt
从 Google Drive 读取文件 unusual/name.txt
(/
需要被替换为外观相似的 /
字符)。
注意事项
文件名编码系统在大多数情况下都能很好地工作,至少在文件名使用英语或类似语言书写的情况下。你甚至可能不会注意到它:它只是默默地工作。然而,在某些情况下,它可能会导致问题。例如,当文件名使用中文或日语书写时,通常会使用标点符号的 Unicode 全角变体。
在 Windows 上,字符 :
、*
和 ?
是受限字符的示例。如果这些字符在支持它们的远程存储上的文件名中使用,Rclone 在下载到 Windows 时会将它们透明地转换为其全角 Unicode 变体 *
、?
和 :
,并在上传时再转换回来。这样,在 Windows 上不允许的文件名仍然可以存储。
然而,如果你在 Windows 系统上的文件最初就使用了这些相同的 Unicode 字符作为文件名,它们也会被包含在相同的转换过程中。例如,如果你在 Windows 文件系统中创建了一个名为 Test:1.jpg
的文件,其中 :
是 Unicode 全角冒号符号,并使用 rclone 将其上传到支持常规 :
(半角冒号)的 Google Drive,rclone 会将全角 :
替换为半角 :
,并将文件存储为 Test:1.jpg
在 Google Drive 中。由于 Windows 和 Google Drive 都允许使用名称 Test:1.jpg
,在这种情况下,rclone 最好保持文件名不变。
在相反的情况下;如果你在 Google Drive 中有一个名为 Test:1.jpg
的文件,例如从 Linux 系统上传的,其中 :
在文件名中是有效的。然后稍后使用 rclone 将这个文件复制到你的 Windows 计算机上,你会注意到在本地磁盘上它被重命名为 Test:1.jpg
。原始文件名在 Windows 上是不合法的,因为包含 :
,因此 rclone 会重命名它以使复制成为可能。这一切都很好。然而,这也可能导致一个问题:如果你在 Windows 上已经有一个 不同的 名为 Test:1.jpg
的文件,然后使用 rclone 进行双向复制。rclone 会将 Google Drive 上最初名为 Test:1.jpg
的文件和 Windows 上最初名为 Test:1.jpg
的文件视为同一个文件,并将其中一个文件的内容替换为另一个文件的内容。
实际上,不可能在所有情况下都正确处理这类问题,但通过自定义 编码选项,更改 rclone 应该转换的字符集,你应该能够创建一个适合你特定情况的配置。另请参阅下面的 示例。
(这里以 Windows 作为有许多受限字符的文件系统示例,以 Google Drive 作为受限字符较少的存储系统示例。)
默认受限字符
下表显示了默认替换的字符。
当在文件名中找到替换字符时,该字符将用 ‛
字符进行转义,以避免模糊的文件名。
(例如,名为 ␀.txt
的文件将显示为 ‛␀.txt
)
每个云存储后端可以使用不同的字符集,这些字符集将在每个后端的文档中指定。
Character | Value | Replacement |
---|---|---|
NUL | 0x00 | ␀ |
SOH | 0x01 | ␁ |
STX | 0x02 | ␂ |
ETX | 0x03 | ␃ |
EOT | 0x04 | ␄ |
ENQ | 0x05 | ␅ |
ACK | 0x06 | ␆ |
BEL | 0x07 | ␇ |
BS | 0x08 | ␈ |
HT | 0x09 | ␉ |
LF | 0x0A | ␊ |
VT | 0x0B | ␋ |
FF | 0x0C | ␌ |
CR | 0x0D | ␍ |
SO | 0x0E | ␎ |
SI | 0x0F | ␏ |
DLE | 0x10 | ␐ |
DC1 | 0x11 | ␑ |
DC2 | 0x12 | ␒ |
DC3 | 0x13 | ␓ |
DC4 | 0x14 | ␔ |
NAK | 0x15 | ␕ |
SYN | 0x16 | ␖ |
ETB | 0x17 | ␗ |
CAN | 0x18 | ␘ |
EM | 0x19 | ␙ |
SUB | 0x1A | ␚ |
ESC | 0x1B | ␛ |
FS | 0x1C | ␜ |
GS | 0x1D | ␝ |
RS | 0x1E | ␞ |
US | 0x1F | ␟ |
/ | 0x2F | / |
DEL | 0x7F | ␡ |
默认编码也会对这些文件名进行编码,因为它们是 在许多云存储系统中存在问题。
File name | Replacement |
---|---|
. | . |
.. | .. |
无效的 UTF-8 字节
一些后端仅支持格式良好的 UTF-8 字节序列作为文件或目录名。
在这种情况下,所有无效的 UTF-8 字节将被替换为字节值的带引号表示形式,以便将文件上传到这样的后端。例如,无效字节 0xFE
将被编码为 ‛FE
。
无效 UTF-8 字节的常见来源是本地文件系统,这些文件系统以不同于 UTF-8 或 UTF-16 的编码方式存储名称,如 latin1。有关详细信息,请参阅 本地文件名 部分。
编码选项
大多数后端都有一个编码选项,可以通过标志 --backend-encoding
指定(其中 backend
是后端的名称),也可以作为配置参数 encoding
指定(你需要在 rclone config
中选择高级配置才能看到它)。
该选项有一个默认值,它以一种尽可能保留最多字符的方式对字符进行编码和解码(见上文)。
然而,在某些情况下这可能会出现问题,例如,如果你有一个包含 Unicode 全角字符 *
、?
或 :
的 Windows 文件系统,你希望这些字符在远程端保持不变,而不是被转换为常规的(半角)*
、?
和 :
。
--backend-encoding
标志允许你更改这种行为。你可以使用 --backend-encoding Raw
完全禁用编码,或者在配置文件中设置 encoding = Raw
。
编码选项接受一个以逗号分隔的编码列表。你可以通过向此标志传递一个无效值来查看所有可能的值,例如 --local-encoding "help"
。rclone help flags encoding
命令将显示后端的默认值。
Encoding | Characters | Encoded as |
---|---|---|
Asterisk | * |
* |
BackQuote | ` |
` |
BackSlash | \ |
\ |
Colon | : |
: |
CrLf | CR 0x0D, LF 0x0A | ␍ , ␊ |
Ctl | All control characters 0x00-0x1F | ␀␁␂␃␄␅␆␇␈␉␊␋␌␍␎␏␐␑␒␓␔␕␖␗␘␙␚␛␜␝␞␟ |
Del | DEL 0x7F | ␡ |
Dollar | $ |
$ |
Dot | . or .. as entire string |
. , .. |
DoubleQuote | " |
" |
Exclamation | ! |
! |
Hash | # |
# |
InvalidUtf8 | An invalid UTF-8 character (e.g. latin1) | � |
LeftCrLfHtVt | CR 0x0D, LF 0x0A, HT 0x09, VT 0x0B on the left of a string | ␍ , ␊ , ␉ , ␋ |
LeftPeriod | . on the left of a string |
. |
LeftSpace | SPACE on the left of a string | ␠ |
LeftTilde | ~ on the left of a string |
~ |
LtGt | < , > |
< , > |
None ¹ | NUL 0x00 | ␀ |
Percent | % |
% |
Pipe | | | | |
Question | ? |
? |
RightCrLfHtVt | CR 0x0D, LF 0x0A, HT 0x09, VT 0x0B on the right of a string | ␍ , ␊ , ␉ , ␋ |
RightPeriod | . on the right of a string |
. |
RightSpace | SPACE on the right of a string | ␠ |
Semicolon | ; |
; |
SingleQuote | ' |
' |
Slash | / |
/ |
SquareBracket | [ , ] |
[ , ] |
¹ 除非使用 Raw
编码,否则从 NUL
(0x00)到 ␀
的编码始终是隐式的。
之前的文档错误地将其描述为禁用编码,为了保持向后兼容性,其行为并未改变。
编码示例:FTP
举一个具体的例子,FTP 后端的默认编码是
--ftp-encoding "Slash,Del,Ctl,RightSpace,Dot"
然而,假设 FTP 服务器运行在 Windows 系统上,文件名中不能包含任何 Windows 系统的无效字符。你正在将 Linux 服务器上的文件备份到这个 FTP 服务器,而 Linux 服务器上的文件名中包含这些字符。因此,你需要将 Windows 系统的受限字符集添加到现有的编码中,这些字符集包括:
Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,BackSlash,Ctl,RightSpace,RightPeriod,InvalidUtf8,Dot
添加后得到:
Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,BackSlash,Ctl,RightSpace,RightPeriod,InvalidUtf8,Dot,Del,RightSpace
可以使用 --ftp-encoding
标志或在配置文件中使用 encoding
参数来指定这个编码。
编码示例:Windows
再举一个例子,在 Windows 系统上有一个名为 Test:1.jpg
的文件,其中 :
是 Unicode 全角冒号符号。当使用 rclone 将这个文件复制到支持普通(半角)冒号 :
的远程存储(如 Google Drive)时,你会注意到文件被重命名为 Test:1.jpg
。
为了避免这种情况,你可以使用命令行参数 --local-encoding
来更改 rclone 对本地文件系统应转换的字符集。Rclone 在 Windows 系统上的默认行为对应于
--local-encoding "Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,BackSlash,Ctl,RightSpace,RightPeriod,InvalidUtf8,Dot"
如果你希望在文件名中使用全角字符 :
、*
和 ?
,并且在上传到远程存储时 rclone 不会对它们进行更改,那么可以设置一个与默认值相同但不包含 Colon,Question,Asterisk
的编码:
--local-encoding "Slash,LtGt,DoubleQuote,Pipe,BackSlash,Ctl,RightSpace,RightPeriod,InvalidUtf8,Dot"
或者,你可以使用 --local-encoding Raw
来禁用任何字符的转换。
你也可以不使用命令行参数 --local-encoding
,而是将其设置为 环境变量 RCLONE_LOCAL_ENCODING
,或者在配置文件中 配置 一个类型为 local
的远程存储,并在那里设置 encoding
选项。
这样做的风险在于,如果你在云存储中有一个包含常规(半角)的 :
、*
和 ?
的文件名,并且尝试将其下载到你的 Windows 文件系统中,这将会失败。这些字符在 Windows 的文件名中是无效的,而你已经告诉 rclone 不要通过将它们转换为有效的全角变体来解决这个问题。
MIME 类型
MIME 类型(也称为媒体类型)使用简单的文本分类来对文档类型进行分类,例如 text/html
或 application/pdf
。
一些云存储系统支持读取(R
)对象的 MIME 类型,而有些则支持写入(W
)对象的 MIME 类型。
如果你直接从存储系统向 HTTP 提供文件,MIME 类型可能很重要。
如果你从支持读取(R
)的远程存储复制到支持写入(W
)的远程存储,那么 rclone 将保留 MIME 类型。否则,它们将从文件扩展名中猜测,或者远程存储本身可能会分配 MIME 类型。
元数据
后端可能支持也可能不支持读取或写入元数据。它们可能支持读取和写入系统元数据(该后端固有的元数据)和/或用户元数据(通用元数据)。
元数据支持的级别如下:
键 | 解释 |
---|---|
R |
仅对文件进行系统元数据的只读操作 |
RW |
仅对文件进行系统元数据的读写操作 |
RWU |
仅对文件进行系统元数据的读写操作以及用户元数据的读写操作 |
DR |
对文件和目录进行系统元数据的只读操作 |
DRW |
对文件和目录进行系统元数据的读写操作 |
DRWU |
对文件和目录进行系统元数据的读写操作以及用户元数据的读写操作 |
更多信息请参阅 元数据文档。
可选功能
所有 rclone 远程存储都支持一组基本命令。其他功能取决于后端特定的功能。
Name | Purge | Copy | Move | DirMove | CleanUp | ListR | StreamUpload | MultithreadUpload | LinkSharing | About | EmptyDir |
---|---|---|---|---|---|---|---|---|---|---|---|
1Fichier | No | Yes | Yes | No | No | No | No | No | Yes | No | Yes |
Akamai Netstorage | Yes | No | No | No | No | Yes | Yes | No | No | No | Yes |
Amazon S3 (or S3 compatible) | No | Yes | No | No | Yes | Yes | Yes | Yes | Yes | No | No |
Backblaze B2 | No | Yes | No | No | Yes | Yes | Yes | Yes | Yes | No | No |
Box | Yes | Yes | Yes | Yes | Yes | No | Yes | No | Yes | Yes | Yes |
Citrix ShareFile | Yes | Yes | Yes | Yes | No | No | No | No | No | No | Yes |
Dropbox | Yes | Yes | Yes | Yes | No | No | Yes | No | Yes | Yes | Yes |
Cloudinary | No | No | No | No | No | No | Yes | No | No | No | No |
Enterprise File Fabric | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | Yes |
Files.com | Yes | Yes | Yes | Yes | No | No | Yes | No | Yes | No | Yes |
FTP | No | No | Yes | Yes | No | No | Yes | No | No | No | Yes |
Gofile | Yes | Yes | Yes | Yes | No | No | Yes | No | Yes | Yes | Yes |
Google Cloud Storage | Yes | Yes | No | No | No | No | Yes | No | No | No | No |
Google Drive | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes |
Google Photos | No | No | No | No | No | No | No | No | No | No | No |
HDFS | Yes | No | Yes | Yes | No | No | Yes | No | No | Yes | Yes |
HiDrive | Yes | Yes | Yes | Yes | No | No | Yes | No | No | No | Yes |
HTTP | No | No | No | No | No | No | No | No | No | No | Yes |
iCloud Drive | Yes | Yes | Yes | Yes | No | No | No | No | No | No | Yes |
ImageKit | Yes | Yes | Yes | No | No | No | No | No | No | No | Yes |
Internet Archive | No | Yes | No | No | Yes | Yes | No | No | Yes | Yes | No |
Jottacloud | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes | Yes | Yes |
Koofr | Yes | Yes | Yes | Yes | No | No | Yes | No | Yes | Yes | Yes |
Mail.ru Cloud | Yes | Yes | Yes | Yes | Yes | No | No | No | Yes | Yes | Yes |
Mega | Yes | No | Yes | Yes | Yes | No | No | No | Yes | Yes | Yes |
Memory | No | Yes | No | No | No | Yes | Yes | No | No | No | No |
Microsoft Azure Blob Storage | Yes | Yes | No | No | No | Yes | Yes | Yes | No | No | No |
Microsoft Azure Files Storage | No | Yes | Yes | Yes | No | No | Yes | Yes | No | Yes | Yes |
Microsoft OneDrive | Yes | Yes | Yes | Yes | Yes | Yes ⁵ | No | No | Yes | Yes | Yes |
OpenDrive | Yes | Yes | Yes | Yes | No | No | No | No | No | Yes | Yes |
OpenStack Swift | Yes ¹ | Yes | No | No | No | Yes | Yes | No | No | Yes | No |
Oracle Object Storage | No | Yes | No | No | Yes | Yes | Yes | Yes | No | No | No |
pCloud | Yes | Yes | Yes | Yes | Yes | No | No | No | Yes | Yes | Yes |
PikPak | Yes | Yes | Yes | Yes | Yes | No | No | No | Yes | Yes | Yes |
Pixeldrain | Yes | No | Yes | Yes | No | No | Yes | No | Yes | Yes | Yes |
premiumize.me | Yes | No | Yes | Yes | No | No | No | No | Yes | Yes | Yes |
put.io | Yes | No | Yes | Yes | Yes | No | Yes | No | No | Yes | Yes |
Proton Drive | Yes | No | Yes | Yes | Yes | No | No | No | No | Yes | Yes |
QingStor | No | Yes | No | No | Yes | Yes | No | No | No | No | No |
Quatrix by Maytech | Yes | Yes | Yes | Yes | No | No | No | No | No | Yes | Yes |
Seafile | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes |
SFTP | No | Yes ⁴ | Yes | Yes | No | No | Yes | No | No | Yes | Yes |
Sia | No | No | No | No | No | No | Yes | No | No | No | Yes |
SMB | No | No | Yes | Yes | No | No | Yes | Yes | No | No | Yes |
SugarSync | Yes | Yes | Yes | Yes | No | No | Yes | No | Yes | No | Yes |
Storj | Yes ² | Yes | Yes | No | No | Yes | Yes | No | Yes | No | No |
Uloz.to | No | No | Yes | Yes | No | No | No | No | No | No | Yes |
Uptobox | No | Yes | Yes | Yes | No | No | No | No | No | No | No |
WebDAV | Yes | Yes | Yes | Yes | No | No | Yes ³ | No | No | Yes | Yes |
Yandex Disk | Yes | Yes | Yes | Yes | Yes | No | Yes | No | Yes | Yes | Yes |
Zoho WorkDrive | Yes | Yes | Yes | Yes | No | No | No | No | No | Yes | Yes |
The local filesystem | No | No | Yes | Yes | No | No | Yes | Yes | No | Yes | Yes |
¹ 注意,Swift 实现此功能是为了删除目录标记,但除了逐个删除文件外,它实际上并没有更快的删除文件的方法。
² Storj 仅对整个存储桶有效实现此功能。如果要清除存储桶内的某个目录,文件将被逐个删除。
³ Nextcloud 不支持流式上传。
⁴ 使用 --sftp-copy-is-hardlink
标志来启用。
⁵ 使用 --onedrive-delta
标志来启用。
清除(Purge)
这比逐个删除目录中的所有文件更快地删除一个目录。
复制(Copy)
用于在同一远程存储中复制对象。这被称为服务器端复制,因此你可以在不下载和重新上传文件的情况下复制文件。如果你使用 rclone copy
或者在远程存储不直接支持 移动(Move)
时使用 rclone move
,就会用到此功能。
如果服务器不直接支持 复制(Copy)
,则在复制操作中,文件会先被下载然后重新上传。
移动(Move)
用于在同一远程存储中移动/重命名对象。这被称为文件的服务器端移动。如果服务器不支持 目录移动(DirMove)
,则在 rclone move
中会使用此功能。
如果服务器不支持 移动(Move)
,则 rclone 会通过 复制(Copy)
然后删除来模拟该操作。如果服务器不支持 复制(Copy)
,则 rclone 会下载文件并重新上传。
目录移动(DirMove)
如果可能,此功能用于实现 rclone move
来移动一个目录。如果不支持,则会对每个文件使用 移动(Move)
(最终会退回到 复制(Copy)
然后下载和上传 - 请参阅 移动(Move)
部分)。
清理(CleanUp)
这用于通过 rclone cleanup
清空远程存储的回收站。
如果服务器不支持 清理(CleanUp)
,则 rclone cleanup
会返回一个错误。
‡‡ 请注意,虽然 Box 实现了此功能,但它必须逐个删除每个文件,因此比通过 Web 界面清空回收站要慢。
递归列表(ListR)
远程存储支持递归列表,以便快速列出目录下的所有内容。这使得 --fast-list
标志可以工作。更多详细信息请参阅 rclone 文档。
流式上传(StreamUpload)
一些远程存储允许在事先不知道文件大小的情况下上传文件。这允许某些操作无需先将文件暂存到本地磁盘即可工作,例如 rclone rcat
。
多线程上传(MultithreadUpload)
一些远程存储允许将传输到远程的文件以块的形式并行发送。如果支持此功能,rclone 将使用多线程复制来更快地传输文件。
链接共享(LinkSharing)
为文件或文件夹设置必要的权限,并打印一个链接,允许其他人访问它们,即使他们在特定的云服务提供商处没有账户。
信息查询(About)
Rclone 的 about
命令用于打印远程存储的配额信息。典型的输出包括已使用字节数、可用字节数、配额和回收站中的字节数。
如果远程存储不支持 信息查询(About)
功能,rclone about remote:
会返回一个错误。
不支持 信息查询(About)
功能的后端无法确定 rclone 挂载点的可用空间,也不能在 rclone 联合远程存储中使用 mfs
(最大可用空间)策略。
请参阅 rclone about 命令
空目录支持(EmptyDir)
远程存储支持空目录。有关详细信息,请参阅 限制。大多数基于对象/存储桶的远程存储不支持此功能。