Commit graph

43 commits

Author SHA1 Message Date
Alexander Neumann
f02ee7386a Auto create data/ subdirs on demand
Closes #40
2018-01-05 18:04:26 +01:00
Konrad Wojas
d1504d7d66 Prometheus: add user label and delete blob metrics 2017-10-30 17:05:56 +01:00
Zlatko Čalušić
d056b85432 Check errors in many places
Admittedly, in some places just document the fact that we ignore error
return values, 'cause we don't know what to do with it.  At least, the
linter is happy.
2017-10-25 18:31:34 +02:00
Zlatko Čalušić
10951e4540 Unshadow err in one place 2017-10-25 18:19:14 +02:00
Konrad Wojas
b213d2a274 Fix goimports 2017-10-25 17:53:37 +02:00
Konrad Wojas
ca0e09261f Add Prometheus metrics
Exposes a few metrics for Prometheus under /metrics if started with --prometheus.

Example:

    # HELP rest_server_blob_read_bytes_total Total number of bytes read from blobs
    # TYPE rest_server_blob_read_bytes_total counter
    rest_server_blob_read_bytes_total{repo="test",type="data"} 2.13557024e+09
    rest_server_blob_read_bytes_total{repo="test",type="index"} 1.198653e+06
    rest_server_blob_read_bytes_total{repo="test",type="keys"} 5388
    rest_server_blob_read_bytes_total{repo="test",type="locks"} 1975
    rest_server_blob_read_bytes_total{repo="test",type="snapshots"} 10018
    # HELP rest_server_blob_read_total Total number of blobs read
    # TYPE rest_server_blob_read_total counter
    rest_server_blob_read_total{repo="test",type="data"} 3985
    rest_server_blob_read_total{repo="test",type="index"} 21
    rest_server_blob_read_total{repo="test",type="keys"} 12
    rest_server_blob_read_total{repo="test",type="locks"} 12
    rest_server_blob_read_total{repo="test",type="snapshots"} 32
    # HELP rest_server_blob_write_bytes_total Total number of bytes written to blobs
    # TYPE rest_server_blob_write_bytes_total counter
    rest_server_blob_write_bytes_total{repo="test",type="data"} 1.063726179e+09
    rest_server_blob_write_bytes_total{repo="test",type="index"} 395586
    rest_server_blob_write_bytes_total{repo="test",type="locks"} 1975
    rest_server_blob_write_bytes_total{repo="test",type="snapshots"} 1933
    # HELP rest_server_blob_write_total Total number of blobs written
    # TYPE rest_server_blob_write_total counter
    rest_server_blob_write_total{repo="test",type="data"} 226
    rest_server_blob_write_total{repo="test",type="index"} 6
    rest_server_blob_write_total{repo="test",type="locks"} 12
    rest_server_blob_write_total{repo="test",type="snapshots"} 6
2017-10-25 17:53:37 +02:00
Kenny Keslar
618b530b88 Implement an append only mode. 2017-09-13 14:46:56 +02:00
Alexander Neumann
a628c4e01a Fix directory traversal
This commit introduces the strict checks from net/http.Dir, which fixes
a directory traversal issue.

Closes #22
2017-07-30 17:37:45 +02:00
Matthew Holt
65152c7bf5 Move main function into separate package (closes #12) 2017-06-25 11:48:02 +02:00
Zlatko Čalušić
489391646d Refactor createDirectories(), improve error handling 2017-05-01 20:10:46 +02:00
Zlatko Čalušić
e93bc32c78 Remove legacy code 2017-05-01 20:02:27 +02:00
Zlatko Čalušić
e2a4dd5dab Handler cleanup 2017-05-01 20:01:52 +02:00
Alexander Neumann
84cabc7880 Make rest-server compatible (#8)
* Allow deleting config files
* Directly write to target files, with O_EXCL
2017-03-18 13:11:29 +01:00
Zlatko Čalušić
919add5012 Implement POST /path?create=true for explicit repository creation
Legacy code which created repo on first "POST /keys/foo" remains, so
restic clients <= v0.3.3 continue working.
2017-01-27 20:45:53 +01:00
Zlatko Čalušić
2c90434911 Add debug output for HTTP error cases 2017-01-16 23:39:56 +01:00
Zlatko Čalušić
c1ace4c9d9 Don't shadow config struct 2017-01-16 23:01:08 +01:00
Alexander Neumann
0f4373ed7f Replace flag with cobra 2016-12-30 21:13:51 +01:00
Zlatko Čalušić
c600048400 Use Go constants for HTTP errors 2016-12-28 19:51:25 +01:00
Zlatko Čalušić
f14b15ee31 Allow multiple repositories 2016-12-28 00:57:25 +01:00
Zlatko Čalušić
755cf10659 Use goji.io pat package to extract params 2016-12-27 18:59:47 +01:00
Zlatko Čalušić
d0027c19db Create toplevel repository directory 2016-12-27 16:15:54 +01:00
Zlatko Čalušić
fa0b53efe7 Use goji.io mux
Remove old router implementation.
2016-12-27 14:24:07 +01:00
Zlatko Čalušić
1f29574118 Add debug flag 2016-12-27 12:26:41 +01:00
Zlatko Čalušić
061d31829d Create directories before key setup, not on startup 2016-12-27 01:35:45 +01:00
Zlatko Čalušić
75c1eae7f2 Add isHashed() 2016-11-11 01:29:55 +01:00
Zlatko Čalušić
267ae63276 Remove fs package and dirty tricks it does
The Linux kernel page cache ALWAYS knows better.  Fighting it brings
only worse performance. Usage of fadvise() is wrong 9 out of 10 times.

Removing the whole fs package brings a nice 100% speedup when running
costly prune command. And that is measured on localhost, the improvement
could be much bigger when using network with higher latency.
2016-11-06 20:09:42 +01:00
Zlatko Čalušić
9bba2f0b78 Miscellaneous handlers.go changes 2016-11-06 18:59:19 +01:00
Zlatko Čalušić
bbca04fd7e Sync BLOB's to disk before returning OK status
This slows down backup command up to 25% on a very fast network (read:
localhost), but is the right thing to do. Safety first, performance
second.
2016-11-06 18:14:08 +01:00
Zlatko Čalušić
65c1af31fe Create data hash folders during startup, too
So, that we are not constantly trying to mkdir() what is already there.
This is a small performance improvement.
2016-11-06 16:23:32 +01:00
Zlatko Čalušić
fe8ce643aa Use temporary folder for temporary files 2016-11-06 15:46:11 +01:00
Zlatko Čalušić
67b66134fc Optimize data directory, hash one level
This brings REST backend up to date with local backend.  Repository
format is now identical between them.  You can now access REST
repository locally, and vice versa.  This is a nice feature!
2016-11-06 14:02:43 +01:00
Zlatko Čalušić
e0ac4f7afb Remove needless build tags 2016-11-06 11:26:06 +01:00
Zlatko Čalušić
5de6d4fd00 Reformat comments 2016-11-06 11:24:28 +01:00
Zlatko Čalušić
93d8c2beba Copy errors & fs packages from the restic repo and fix import paths
Tedious, but I see no better way...
2016-11-05 17:33:34 +01:00
Zlatko Čalušić
80196e6df6 Update with changes from github.com/restic/restic tree
Uncompilable right now, due to bad import paths.
2016-11-05 17:18:42 +01:00
Chapuis Bertil
3a9283a115 enabled htpasswd authentication 2015-09-19 14:52:50 +02:00
Chapuis Bertil
a982e279f3 renamed file 2015-09-18 17:17:33 +02:00
Chapuis Bertil
c19c63325c simple backend 2015-09-16 23:34:11 +02:00
Chapuis Bertil
016bbf619a improved repository with ioutil and added tests 2015-09-09 11:21:15 +02:00
Chapuis Bertil
738e78c439 command line args 2015-09-07 15:29:24 +02:00
Chapuis Bertil
5c4323a168 basic auth 2015-08-25 11:35:49 +02:00
Chapuis Bertil
59621ca2d6 read support for length and offset 2015-08-15 10:06:10 +02:00
Chapuis Bertil
465ef4b493 refactoring 2015-08-14 11:17:57 +02:00