forked from TrueCloudLab/rclone
Add a mega.nz remote #163
Not supported yet: * Hash * ModTime * Server Side Copy Otherwise fully functional and passing all the tests.
This commit is contained in:
parent
f50b85278a
commit
1f255a8567
12 changed files with 1268 additions and 0 deletions
|
@ -25,6 +25,7 @@ Rclone is a command line program to sync files and directories to and from
|
||||||
* Google Drive
|
* Google Drive
|
||||||
* HTTP
|
* HTTP
|
||||||
* Hubic
|
* Hubic
|
||||||
|
* Mega
|
||||||
* Microsoft Azure Blob Storage
|
* Microsoft Azure Blob Storage
|
||||||
* Microsoft OneDrive
|
* Microsoft OneDrive
|
||||||
* Openstack Swift / Rackspace cloud files / Memset Memstore / OVH / Oracle Cloud Storage
|
* Openstack Swift / Rackspace cloud files / Memset Memstore / OVH / Oracle Cloud Storage
|
||||||
|
|
|
@ -16,6 +16,7 @@ import (
|
||||||
_ "github.com/ncw/rclone/backend/http"
|
_ "github.com/ncw/rclone/backend/http"
|
||||||
_ "github.com/ncw/rclone/backend/hubic"
|
_ "github.com/ncw/rclone/backend/hubic"
|
||||||
_ "github.com/ncw/rclone/backend/local"
|
_ "github.com/ncw/rclone/backend/local"
|
||||||
|
_ "github.com/ncw/rclone/backend/mega"
|
||||||
_ "github.com/ncw/rclone/backend/onedrive"
|
_ "github.com/ncw/rclone/backend/onedrive"
|
||||||
_ "github.com/ncw/rclone/backend/pcloud"
|
_ "github.com/ncw/rclone/backend/pcloud"
|
||||||
_ "github.com/ncw/rclone/backend/qingstor"
|
_ "github.com/ncw/rclone/backend/qingstor"
|
||||||
|
|
1129
backend/mega/mega.go
Normal file
1129
backend/mega/mega.go
Normal file
File diff suppressed because it is too large
Load diff
17
backend/mega/mega_test.go
Normal file
17
backend/mega/mega_test.go
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
// Test Mega filesystem interface
|
||||||
|
package mega_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/ncw/rclone/backend/mega"
|
||||||
|
"github.com/ncw/rclone/fstest/fstests"
|
||||||
|
)
|
||||||
|
|
||||||
|
// TestIntegration runs integration tests against the remote
|
||||||
|
func TestIntegration(t *testing.T) {
|
||||||
|
fstests.Run(t, &fstests.Opt{
|
||||||
|
RemoteName: "TestMega:",
|
||||||
|
NilObject: (*mega.Object)(nil),
|
||||||
|
})
|
||||||
|
}
|
|
@ -35,6 +35,7 @@ docs = [
|
||||||
"drive.md",
|
"drive.md",
|
||||||
"http.md",
|
"http.md",
|
||||||
"hubic.md",
|
"hubic.md",
|
||||||
|
"mega.md",
|
||||||
"azureblob.md",
|
"azureblob.md",
|
||||||
"onedrive.md",
|
"onedrive.md",
|
||||||
"qingstor.md",
|
"qingstor.md",
|
||||||
|
|
|
@ -82,6 +82,7 @@ from various cloud storage systems and using file transfer services, such as:
|
||||||
* Google Drive
|
* Google Drive
|
||||||
* HTTP
|
* HTTP
|
||||||
* Hubic
|
* Hubic
|
||||||
|
* Mega
|
||||||
* Microsoft Azure Blob Storage
|
* Microsoft Azure Blob Storage
|
||||||
* Microsoft OneDrive
|
* Microsoft OneDrive
|
||||||
* Openstack Swift / Rackspace cloud files / Memset Memstore
|
* Openstack Swift / Rackspace cloud files / Memset Memstore
|
||||||
|
|
|
@ -28,6 +28,7 @@ Rclone is a command line program to sync files and directories to and from:
|
||||||
* {{< provider name="Hubic" home="https://hubic.com/" config="/hubic/" >}}
|
* {{< provider name="Hubic" home="https://hubic.com/" config="/hubic/" >}}
|
||||||
* {{< provider name="IBM COS S3" home="http://www.ibm.com/cloud/object-storage" config="/s3/#ibm-cos-s3" >}}
|
* {{< provider name="IBM COS S3" home="http://www.ibm.com/cloud/object-storage" config="/s3/#ibm-cos-s3" >}}
|
||||||
* {{< provider name="Memset Memstore" home="https://www.memset.com/cloud/storage/" config="/swift/" >}}
|
* {{< provider name="Memset Memstore" home="https://www.memset.com/cloud/storage/" config="/swift/" >}}
|
||||||
|
* {{< provider name="Mega" home="https://mega.nz/" config="/mega/" >}}
|
||||||
* {{< provider name="Microsoft Azure Blob Storage" home="https://azure.microsoft.com/en-us/services/storage/blobs/" config="/azureblob/" >}}
|
* {{< provider name="Microsoft Azure Blob Storage" home="https://azure.microsoft.com/en-us/services/storage/blobs/" config="/azureblob/" >}}
|
||||||
* {{< provider name="Microsoft OneDrive" home="https://onedrive.live.com/" config="/onedrive/" >}}
|
* {{< provider name="Microsoft OneDrive" home="https://onedrive.live.com/" config="/onedrive/" >}}
|
||||||
* {{< provider name="Minio" home="https://www.minio.io/" config="/s3/#minio" >}}
|
* {{< provider name="Minio" home="https://www.minio.io/" config="/s3/#minio" >}}
|
||||||
|
|
|
@ -33,6 +33,7 @@ See the following for detailed instructions for
|
||||||
* [Google Drive](/drive/)
|
* [Google Drive](/drive/)
|
||||||
* [HTTP](/http/)
|
* [HTTP](/http/)
|
||||||
* [Hubic](/hubic/)
|
* [Hubic](/hubic/)
|
||||||
|
* [Mega](/mega/)
|
||||||
* [Microsoft Azure Blob Storage](/azureblob/)
|
* [Microsoft Azure Blob Storage](/azureblob/)
|
||||||
* [Microsoft OneDrive](/onedrive/)
|
* [Microsoft OneDrive](/onedrive/)
|
||||||
* [Openstack Swift / Rackspace Cloudfiles / Memset Memstore](/swift/)
|
* [Openstack Swift / Rackspace Cloudfiles / Memset Memstore](/swift/)
|
||||||
|
|
108
docs/content/mega.md
Normal file
108
docs/content/mega.md
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
---
|
||||||
|
title: "Mega"
|
||||||
|
description: "Rclone docs for Mega"
|
||||||
|
date: "2018-04-09"
|
||||||
|
---
|
||||||
|
|
||||||
|
<i class="fa fa-archive"></i> Mega
|
||||||
|
-----------------------------------------
|
||||||
|
|
||||||
|
[Mega](https://mega.nz/) is a cloud storage and file hosting service
|
||||||
|
known for its security feature where all files are encrypted locally
|
||||||
|
before they are uploaded. This prevents anyone (including employees of
|
||||||
|
Mega) from accessing the files without knowledge of the key used for
|
||||||
|
encryption.
|
||||||
|
|
||||||
|
This is an rclone backend for Mega which supports the file transfer
|
||||||
|
features of Mega using the same client side encryption.
|
||||||
|
|
||||||
|
Paths are specified as `remote:path`
|
||||||
|
|
||||||
|
Paths may be as deep as required, eg `remote:directory/subdirectory`.
|
||||||
|
|
||||||
|
Here is an example of how to make a remote called `remote`. First run:
|
||||||
|
|
||||||
|
rclone config
|
||||||
|
|
||||||
|
This will guide you through an interactive setup process:
|
||||||
|
|
||||||
|
```
|
||||||
|
No remotes found - make a new one
|
||||||
|
n) New remote
|
||||||
|
s) Set configuration password
|
||||||
|
q) Quit config
|
||||||
|
n/s/q> n
|
||||||
|
name> remote
|
||||||
|
Type of storage to configure.
|
||||||
|
Choose a number from below, or type in your own value
|
||||||
|
1 / Alias for a existing remote
|
||||||
|
\ "alias"
|
||||||
|
[snip]
|
||||||
|
14 / Mega
|
||||||
|
\ "mega"
|
||||||
|
[snip]
|
||||||
|
23 / http Connection
|
||||||
|
\ "http"
|
||||||
|
Storage> mega
|
||||||
|
User name
|
||||||
|
user> you@example.com
|
||||||
|
Password.
|
||||||
|
y) Yes type in my own password
|
||||||
|
g) Generate random password
|
||||||
|
n) No leave this optional password blank
|
||||||
|
y/g/n> y
|
||||||
|
Enter the password:
|
||||||
|
password:
|
||||||
|
Confirm the password:
|
||||||
|
password:
|
||||||
|
Remote config
|
||||||
|
--------------------
|
||||||
|
[remote]
|
||||||
|
type = mega
|
||||||
|
user = you@example.com
|
||||||
|
pass = *** ENCRYPTED ***
|
||||||
|
--------------------
|
||||||
|
y) Yes this is OK
|
||||||
|
e) Edit this remote
|
||||||
|
d) Delete this remote
|
||||||
|
y/e/d> y
|
||||||
|
```
|
||||||
|
|
||||||
|
Once configured you can then use `rclone` like this,
|
||||||
|
|
||||||
|
List directories in top level of your Mega
|
||||||
|
|
||||||
|
rclone lsd remote:
|
||||||
|
|
||||||
|
List all the files in your Mega
|
||||||
|
|
||||||
|
rclone ls remote:
|
||||||
|
|
||||||
|
To copy a local directory to an Mega directory called backup
|
||||||
|
|
||||||
|
rclone copy /home/source remote:backup
|
||||||
|
|
||||||
|
### Modified time and hashes ###
|
||||||
|
|
||||||
|
Mega does not support modification times or hashes yet.
|
||||||
|
|
||||||
|
### Duplicated files ###
|
||||||
|
|
||||||
|
Mega can have two files with exactly the same name and path (unlike a
|
||||||
|
normal file system).
|
||||||
|
|
||||||
|
Duplicated files cause problems with the syncing and you will see
|
||||||
|
messages in the log about duplicates.
|
||||||
|
|
||||||
|
Use `rclone dedupe` to fix duplicated files.
|
||||||
|
|
||||||
|
### Limitations ###
|
||||||
|
|
||||||
|
This backend uses the [go-mega go
|
||||||
|
library](https://github.com/t3rm1n4l/go-mega) which is an opensource
|
||||||
|
go library implementing the Mega API. There doesn't appear to be any
|
||||||
|
documentation for the mega protocol beyond the [mega C++
|
||||||
|
SDK](https://github.com/meganz/sdk) source code so there are likely
|
||||||
|
quite a few errors still remaining in this library.
|
||||||
|
|
||||||
|
Mega allows duplicate files which may confuse rclone.
|
|
@ -27,6 +27,7 @@ Here is an overview of the major features of each cloud storage system.
|
||||||
| Google Drive | MD5 | Yes | No | Yes | R/W |
|
| Google Drive | MD5 | Yes | No | Yes | R/W |
|
||||||
| HTTP | - | No | No | No | R |
|
| HTTP | - | No | No | No | R |
|
||||||
| Hubic | MD5 | Yes | No | No | R/W |
|
| Hubic | MD5 | Yes | No | No | R/W |
|
||||||
|
| Mega | - | No | No | Yes | - |
|
||||||
| Microsoft Azure Blob Storage | MD5 | Yes | No | No | R/W |
|
| Microsoft Azure Blob Storage | MD5 | Yes | No | No | R/W |
|
||||||
| Microsoft OneDrive | SHA1 | Yes | Yes | No | R |
|
| Microsoft OneDrive | SHA1 | Yes | Yes | No | R |
|
||||||
| Openstack Swift | MD5 | Yes | No | No | R/W |
|
| Openstack Swift | MD5 | Yes | No | No | R/W |
|
||||||
|
@ -131,6 +132,7 @@ operations more efficient.
|
||||||
| Google Drive | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes |
|
| Google Drive | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes |
|
||||||
| HTTP | No | No | No | No | No | No | No | No [#2178](https://github.com/ncw/rclone/issues/2178) | No |
|
| HTTP | No | No | No | No | No | No | No | No [#2178](https://github.com/ncw/rclone/issues/2178) | No |
|
||||||
| Hubic | Yes † | Yes | No | No | No | Yes | Yes | No [#2178](https://github.com/ncw/rclone/issues/2178) | Yes |
|
| Hubic | Yes † | Yes | No | No | No | Yes | Yes | No [#2178](https://github.com/ncw/rclone/issues/2178) | Yes |
|
||||||
|
| Mega | Yes | No | Yes | Yes | No | No | No | No [#2178](https://github.com/ncw/rclone/issues/2178) | Yes |
|
||||||
| Microsoft Azure Blob Storage | Yes | Yes | No | No | No | Yes | No | No [#2178](https://github.com/ncw/rclone/issues/2178) | No |
|
| Microsoft Azure Blob Storage | Yes | Yes | No | No | No | Yes | No | No [#2178](https://github.com/ncw/rclone/issues/2178) | No |
|
||||||
| Microsoft OneDrive | Yes | Yes | Yes | No [#197](https://github.com/ncw/rclone/issues/197) | No [#575](https://github.com/ncw/rclone/issues/575) | No | No | No [#2178](https://github.com/ncw/rclone/issues/2178) | Yes |
|
| Microsoft OneDrive | Yes | Yes | Yes | No [#197](https://github.com/ncw/rclone/issues/197) | No [#575](https://github.com/ncw/rclone/issues/575) | No | No | No [#2178](https://github.com/ncw/rclone/issues/2178) | Yes |
|
||||||
| Openstack Swift | Yes † | Yes | No | No | No | Yes | Yes | No [#2178](https://github.com/ncw/rclone/issues/2178) | Yes |
|
| Openstack Swift | Yes † | Yes | No | No | No | Yes | Yes | No [#2178](https://github.com/ncw/rclone/issues/2178) | Yes |
|
||||||
|
|
|
@ -66,6 +66,7 @@
|
||||||
<li><a href="/drive/"><i class="fa fa-google"></i> Google Drive</a></li>
|
<li><a href="/drive/"><i class="fa fa-google"></i> Google Drive</a></li>
|
||||||
<li><a href="/http/"><i class="fa fa-globe"></i> HTTP</a></li>
|
<li><a href="/http/"><i class="fa fa-globe"></i> HTTP</a></li>
|
||||||
<li><a href="/hubic/"><i class="fa fa-space-shuttle"></i> Hubic</a></li>
|
<li><a href="/hubic/"><i class="fa fa-space-shuttle"></i> Hubic</a></li>
|
||||||
|
<li><a href="/mega/"><i class="fa fa-archive"></i> Mega</a></li>
|
||||||
<li><a href="/azureblob/"><i class="fa fa-windows"></i> Microsoft Azure Blob Storage</a></li>
|
<li><a href="/azureblob/"><i class="fa fa-windows"></i> Microsoft Azure Blob Storage</a></li>
|
||||||
<li><a href="/onedrive/"><i class="fa fa-windows"></i> Microsoft OneDrive</a></li>
|
<li><a href="/onedrive/"><i class="fa fa-windows"></i> Microsoft OneDrive</a></li>
|
||||||
<li><a href="/qingstor/"><i class="fa fa-hdd-o"></i> QingStor</a></li>
|
<li><a href="/qingstor/"><i class="fa fa-hdd-o"></i> QingStor</a></li>
|
||||||
|
|
|
@ -132,6 +132,11 @@ var (
|
||||||
SubDir: false,
|
SubDir: false,
|
||||||
FastList: false,
|
FastList: false,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Name: "TestMega:",
|
||||||
|
SubDir: false,
|
||||||
|
FastList: false,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
// Flags
|
// Flags
|
||||||
maxTries = flag.Int("maxtries", 5, "Number of times to try each test")
|
maxTries = flag.Int("maxtries", 5, "Number of times to try each test")
|
||||||
|
|
Loading…
Reference in a new issue