mirror of
https://github.com/rclone/rclone.git
synced 2026-01-20 01:13:15 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
094cc27621 |
14
Makefile
14
Makefile
@@ -2,13 +2,9 @@ TAG := $(shell git describe --tags)
|
|||||||
LAST_TAG := $(shell git describe --tags --abbrev=0)
|
LAST_TAG := $(shell git describe --tags --abbrev=0)
|
||||||
NEW_TAG := $(shell echo $(LAST_TAG) | perl -lpe 's/v//; $$_ += 0.01; $$_ = sprintf("v%.2f", $$_)')
|
NEW_TAG := $(shell echo $(LAST_TAG) | perl -lpe 's/v//; $$_ += 0.01; $$_ = sprintf("v%.2f", $$_)')
|
||||||
|
|
||||||
rclone:
|
rclone: *.go */*.go
|
||||||
@go version
|
@go version
|
||||||
go install -v ./...
|
go build
|
||||||
|
|
||||||
test: rclone
|
|
||||||
go test ./...
|
|
||||||
rclonetest/test.sh
|
|
||||||
|
|
||||||
doc: rclone.1 README.html README.txt
|
doc: rclone.1 README.html README.txt
|
||||||
|
|
||||||
@@ -23,7 +19,7 @@ README.txt: README.md
|
|||||||
|
|
||||||
install: rclone
|
install: rclone
|
||||||
install -d ${DESTDIR}/usr/bin
|
install -d ${DESTDIR}/usr/bin
|
||||||
install -t ${DESTDIR}/usr/bin ${GOPATH}/bin/rclone
|
install -t ${DESTDIR}/usr/bin rclone
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
go clean ./...
|
go clean ./...
|
||||||
@@ -35,10 +31,10 @@ website:
|
|||||||
cd docs && hugo
|
cd docs && hugo
|
||||||
|
|
||||||
upload_website: website
|
upload_website: website
|
||||||
rclone -v sync docs/public memstore:www-rclone-org
|
./rclone -v sync docs/public memstore:www-rclone-org
|
||||||
|
|
||||||
upload:
|
upload:
|
||||||
rclone -v copy build/ memstore:downloads-rclone-org
|
./rclone -v copy build/ memstore:downloads-rclone-org
|
||||||
|
|
||||||
cross: doc
|
cross: doc
|
||||||
./cross-compile $(TAG)
|
./cross-compile $(TAG)
|
||||||
|
|||||||
@@ -261,11 +261,6 @@ Bugs
|
|||||||
|
|
||||||
Changelog
|
Changelog
|
||||||
---------
|
---------
|
||||||
* v1.04 - 2014-07-21
|
|
||||||
* google cloud storage: Fix crash on Update
|
|
||||||
* v1.03 - 2014-07-20
|
|
||||||
* swift, s3, dropbox: fix updated files being marked as corrupted
|
|
||||||
* Make compile with go 1.1 again
|
|
||||||
* v1.02 - 2014-07-19
|
* v1.02 - 2014-07-19
|
||||||
* Implement Dropbox remote
|
* Implement Dropbox remote
|
||||||
* Implement Google Cloud Storage remote
|
* Implement Google Cloud Storage remote
|
||||||
|
|||||||
@@ -2,34 +2,34 @@
|
|||||||
title: "Rclone downloads"
|
title: "Rclone downloads"
|
||||||
description: "Download rclone binaries for your OS."
|
description: "Download rclone binaries for your OS."
|
||||||
type: page
|
type: page
|
||||||
date: "2014-07-21"
|
date: "2014-07-19"
|
||||||
---
|
---
|
||||||
|
|
||||||
Rclone Download v1.04
|
Rclone Download v1.02
|
||||||
=====================
|
=====================
|
||||||
|
|
||||||
* Windows
|
* Windows
|
||||||
* [386 - 32 Bit](http://downloads.rclone.org/rclone-v1.04-windows-386.zip)
|
* [386 - 32 Bit](http://downloads.rclone.org/rclone-v1.02-windows-386.zip)
|
||||||
* [AMD64 - 64 Bit](http://downloads.rclone.org/rclone-v1.04-windows-amd64.zip)
|
* [AMD64 - 64 Bit](http://downloads.rclone.org/rclone-v1.02-windows-amd64.zip)
|
||||||
* OSX
|
* OSX
|
||||||
* [386 - 32 Bit](http://downloads.rclone.org/rclone-v1.04-osx-386.zip)
|
* [386 - 32 Bit](http://downloads.rclone.org/rclone-v1.02-osx-386.zip)
|
||||||
* [AMD64 - 64 Bit](http://downloads.rclone.org/rclone-v1.04-osx-amd64.zip)
|
* [AMD64 - 64 Bit](http://downloads.rclone.org/rclone-v1.02-osx-amd64.zip)
|
||||||
* Linux
|
* Linux
|
||||||
* [386 - 32 Bit](http://downloads.rclone.org/rclone-v1.04-linux-386.zip)
|
* [386 - 32 Bit](http://downloads.rclone.org/rclone-v1.02-linux-386.zip)
|
||||||
* [AMD64 - 64 Bit](http://downloads.rclone.org/rclone-v1.04-linux-amd64.zip)
|
* [AMD64 - 64 Bit](http://downloads.rclone.org/rclone-v1.02-linux-amd64.zip)
|
||||||
* [ARM - 32 Bit](http://downloads.rclone.org/rclone-v1.04-linux-arm.zip)
|
* [ARM - 32 Bit](http://downloads.rclone.org/rclone-v1.02-linux-arm.zip)
|
||||||
* FreeBSD
|
* FreeBSD
|
||||||
* [386 - 32 Bit](http://downloads.rclone.org/rclone-v1.04-freebsd-386.zip)
|
* [386 - 32 Bit](http://downloads.rclone.org/rclone-v1.02-freebsd-386.zip)
|
||||||
* [AMD64 - 64 Bit](http://downloads.rclone.org/rclone-v1.04-freebsd-amd64.zip)
|
* [AMD64 - 64 Bit](http://downloads.rclone.org/rclone-v1.02-freebsd-amd64.zip)
|
||||||
* [ARM - 32 Bit](http://downloads.rclone.org/rclone-v1.04-freebsd-arm.zip)
|
* [ARM - 32 Bit](http://downloads.rclone.org/rclone-v1.02-freebsd-arm.zip)
|
||||||
* NetBSD
|
* NetBSD
|
||||||
* [386 - 32 Bit](http://downloads.rclone.org/rclone-v1.04-netbsd-386.zip)
|
* [386 - 32 Bit](http://downloads.rclone.org/rclone-v1.02-netbsd-386.zip)
|
||||||
* [AMD64 - 64 Bit](http://downloads.rclone.org/rclone-v1.04-netbsd-amd64.zip)
|
* [AMD64 - 64 Bit](http://downloads.rclone.org/rclone-v1.02-netbsd-amd64.zip)
|
||||||
* [ARM - 32 Bit](http://downloads.rclone.org/rclone-v1.04-netbsd-arm.zip)
|
* [ARM - 32 Bit](http://downloads.rclone.org/rclone-v1.02-netbsd-arm.zip)
|
||||||
* OpenBSD
|
* OpenBSD
|
||||||
* [386 - 32 Bit](http://downloads.rclone.org/rclone-v1.04-openbsd-386.zip)
|
* [386 - 32 Bit](http://downloads.rclone.org/rclone-v1.02-openbsd-386.zip)
|
||||||
* [AMD64 - 64 Bit](http://downloads.rclone.org/rclone-v1.04-openbsd-amd64.zip)
|
* [AMD64 - 64 Bit](http://downloads.rclone.org/rclone-v1.02-openbsd-amd64.zip)
|
||||||
* Plan 9
|
* Plan 9
|
||||||
* [386 - 32 Bit](http://downloads.rclone.org/rclone-v1.04-plan9-386.zip)
|
* [386 - 32 Bit](http://downloads.rclone.org/rclone-v1.02-plan9-386.zip)
|
||||||
|
|
||||||
Older downloads can be found [here](http://downloads.rclone.org/)
|
Older downloads can be found [here](http://downloads.rclone.org/)
|
||||||
|
|||||||
@@ -573,9 +573,7 @@ func (o *FsObjectDropbox) remotePath() string {
|
|||||||
func metadataKey(path string) string {
|
func metadataKey(path string) string {
|
||||||
// NB File system is case insensitive
|
// NB File system is case insensitive
|
||||||
path = strings.ToLower(path)
|
path = strings.ToLower(path)
|
||||||
hash := md5.New()
|
return fmt.Sprintf("%x", md5.Sum([]byte(path)))
|
||||||
hash.Write([]byte(path))
|
|
||||||
return fmt.Sprintf("%x", hash.Sum(nil))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the key for the metadata database
|
// Returns the key for the metadata database
|
||||||
@@ -668,7 +666,6 @@ func (o *FsObjectDropbox) setModTimeAndMd5sum(modTime time.Time, md5sum string)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Couldn't set md5sum record: %s", err)
|
return fmt.Errorf("Couldn't set md5sum record: %s", err)
|
||||||
}
|
}
|
||||||
o.md5sum = md5sum
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if !modTime.IsZero() {
|
if !modTime.IsZero() {
|
||||||
@@ -677,7 +674,6 @@ func (o *FsObjectDropbox) setModTimeAndMd5sum(modTime time.Time, md5sum string)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Couldn't set mtime record: %s", err)
|
return fmt.Errorf("Couldn't set mtime record: %s", err)
|
||||||
}
|
}
|
||||||
o.modTime = modTime
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
package fs
|
package fs
|
||||||
|
|
||||||
const Version = "v1.04"
|
const Version = "v1.02"
|
||||||
|
|||||||
@@ -555,12 +555,9 @@ func (o *FsObjectStorage) Update(in io.Reader, modTime time.Time, size int64) er
|
|||||||
Metadata: metadataFromModTime(modTime),
|
Metadata: metadataFromModTime(modTime),
|
||||||
}
|
}
|
||||||
newObject, err := o.storage.svc.Objects.Insert(o.storage.bucket, &object).Media(in).Name(object.Name).PredefinedAcl(o.storage.objectAcl).Do()
|
newObject, err := o.storage.svc.Objects.Insert(o.storage.bucket, &object).Media(in).Name(object.Name).PredefinedAcl(o.storage.objectAcl).Do()
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
// Set the metadata for the new object while we have it
|
// Set the metadata for the new object while we have it
|
||||||
o.setMetaData(newObject)
|
o.setMetaData(newObject)
|
||||||
return nil
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove an object
|
// Remove an object
|
||||||
|
|||||||
@@ -1,8 +1,3 @@
|
|||||||
Remove FIXME skipping directory
|
|
||||||
|
|
||||||
Change lsd command so it doesn't show -1
|
|
||||||
* Make sure all Fses show -1 for objects Zero for dates etc
|
|
||||||
|
|
||||||
Todo
|
Todo
|
||||||
* FIXME: More -dry-run checks for object transfer
|
* FIXME: More -dry-run checks for object transfer
|
||||||
* Might be quicker to check md5sums first? for swift <-> swift certainly, and maybe for small files
|
* Might be quicker to check md5sums first? for swift <-> swift certainly, and maybe for small files
|
||||||
@@ -51,7 +46,9 @@ Bugs
|
|||||||
* When doing copy it recurses the whole of the destination FS which isn't necessary
|
* When doing copy it recurses the whole of the destination FS which isn't necessary
|
||||||
|
|
||||||
Making a release
|
Making a release
|
||||||
* make test
|
* go install -v ./...
|
||||||
|
* go test ./...
|
||||||
|
* rclonetest/test.sh
|
||||||
* make tag
|
* make tag
|
||||||
* edit README.md
|
* edit README.md
|
||||||
* git commit fs/version.go README.md docs/content/downloads.md
|
* git commit fs/version.go README.md docs/content/downloads.md
|
||||||
|
|||||||
@@ -260,21 +260,6 @@ func TestSync(flocal, fremote fs.Fs) {
|
|||||||
|
|
||||||
// ------------------------------------------------------------
|
// ------------------------------------------------------------
|
||||||
|
|
||||||
log.Printf("Sync after changing a file's contents, modtime but not length")
|
|
||||||
WriteFile("potato", "SMALLER BUT SAME DATE", t2)
|
|
||||||
err = fs.Sync(fremote, flocal, true)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalf("Sync failed: %v", err)
|
|
||||||
}
|
|
||||||
items = []Item{
|
|
||||||
{Path: "empty space", Size: 0, ModTime: t2, Md5sum: "d41d8cd98f00b204e9800998ecf8427e"},
|
|
||||||
{Path: "potato", Size: 21, ModTime: t2, Md5sum: "e4cb6955d9106df6263c45fcfc10f163"},
|
|
||||||
}
|
|
||||||
CheckListing(flocal, items)
|
|
||||||
CheckListing(fremote, items)
|
|
||||||
|
|
||||||
// ------------------------------------------------------------
|
|
||||||
|
|
||||||
log.Printf("Sync after removing a file and adding a file --dry-run")
|
log.Printf("Sync after removing a file and adding a file --dry-run")
|
||||||
WriteFile("potato2", "------------------------------------------------------------", t1)
|
WriteFile("potato2", "------------------------------------------------------------", t1)
|
||||||
err = os.Remove(localName + "/potato")
|
err = os.Remove(localName + "/potato")
|
||||||
@@ -290,7 +275,7 @@ func TestSync(flocal, fremote fs.Fs) {
|
|||||||
|
|
||||||
before := []Item{
|
before := []Item{
|
||||||
{Path: "empty space", Size: 0, ModTime: t2, Md5sum: "d41d8cd98f00b204e9800998ecf8427e"},
|
{Path: "empty space", Size: 0, ModTime: t2, Md5sum: "d41d8cd98f00b204e9800998ecf8427e"},
|
||||||
{Path: "potato", Size: 21, ModTime: t2, Md5sum: "e4cb6955d9106df6263c45fcfc10f163"},
|
{Path: "potato", Size: 21, ModTime: t3, Md5sum: "100defcf18c42a1e0dc42a789b107cd2"},
|
||||||
}
|
}
|
||||||
items = []Item{
|
items = []Item{
|
||||||
{Path: "empty space", Size: 0, ModTime: t2, Md5sum: "d41d8cd98f00b204e9800998ecf8427e"},
|
{Path: "empty space", Size: 0, ModTime: t2, Md5sum: "d41d8cd98f00b204e9800998ecf8427e"},
|
||||||
|
|||||||
1
s3/s3.go
1
s3/s3.go
@@ -518,7 +518,6 @@ func (o *FsObjectS3) Update(in io.Reader, modTime time.Time, size int64) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// Read the metadata from the newly created object
|
// Read the metadata from the newly created object
|
||||||
o.meta = nil // wipe old metadata
|
|
||||||
err = o.readMetaData()
|
err = o.readMetaData()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -413,7 +413,6 @@ func (o *FsObjectSwift) Update(in io.Reader, modTime time.Time, size int64) erro
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// Read the metadata from the newly created object
|
// Read the metadata from the newly created object
|
||||||
o.meta = nil // wipe old metadata
|
|
||||||
err = o.readMetaData()
|
err = o.readMetaData()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user