Commit Graph

34 Commits

Author SHA1 Message Date
lupusA
95fbf5a266 docs(site): rephrased the section "Two Variants of Kopia" and corrected the outline to match the document. Added a docker-compose example to the "Docker Images" section. (#2812)
Co-authored-by: lupusA <lupuapps@gmail.com>
2023-03-12 20:23:47 +00:00
Ricardo Pescuma Domenecci
0724511283 feat(repository): Error correction for blobs (#2270)
* Initial implementation of ecc using Encryptor interface

* Created benchmark ecc command

* Fixing the order inside the wrapper

* Removed rs_bw because it is always worse

* Fixing naming and adding more comments

* Different approaches depending of file size/space overhead

* Fixes requested in PR

* Fixed lint errors

* Fixes requested in the PR

* Fixed import order

* Fixed more lint errors
2022-08-09 18:24:25 -07:00
Jarek Kowalski
d3edab594e build(ci): added rclone 1.57.0 to Docker container images (#1718)
* build(ci): added rclone 1.57.0 to Docker container images

/bin/rclone is configured to use config in /app/rclone/rclone.conf
so the user can pass -v ~/.config/rclone:/app/rclone

* pr feedback
2022-02-02 21:06:43 -08:00
Jarek Kowalski
9cad0edb53 test(ui): added end-to-end HTML UI test (#1686)
* test(general): refactored parsing of server output

* test(ui): added experimental end-to-end test using chromedp
2022-01-29 01:34:45 -08:00
Jarek Kowalski
42e5661bf4 ci: added license check using github.com/frapposelli/wwhrd (#1200)
* ci: added license check using github.com/frapposelli/wwhrd

* ci: also check NPM licenses

* readme: removed FOSSA badge

* Makefile: install NPM dependencies before license check
2021-07-17 09:58:25 -07:00
Jarek Kowalski
7c088338ce testing: upload endurance test logs as artifacts, run more frequently 2021-04-07 14:11:39 -07:00
Julio López
7bafe51dcc Replace go-bindata with //go:embed (#844)
* Replace htmlui_fallback.go with go:embed
* Replace go-bindata generated UI with go:embed
* Update site Go version to 1.16
* Update BUILD.md to reflect workflow with go:embed
2021-02-23 01:09:40 -08:00
Jarek Kowalski
70b0d8d9c9 integrate with codecov.io (#836)
* integrate with codecov.io
2021-02-14 20:17:05 -08:00
Jarek Kowalski
77691cf0a2 sftp: run private SFTP server based on Docker (atmoz/sftp) (#796)
* sftp: run private SFTP server based on Docker (atmoz/sftp)

* sftp: disable test on GH Actions && !linux because it does not support Docker.
2021-01-25 22:13:30 -08:00
Erkki Seppälä
6a93e4d5b9 Added support for scanning only one filesystem via files policy (#676)
The new files policy oneFileSystem ignores files that are mounted to
other filesystems similarly to tar's --one-file-system switch. For
example, if this is enabled, backing up / should now automatically
ignore /dev, /proc, etc, so the directory entries themselves don't
appear in the backup. The value of the policy is 'false' by default.

This is implemented by adding a non-windows-field Device (of type
DeviceInfo, reflecting the implementation of Owner) to the Entry
interface. DeviceInfo holds the dev and rdev acquired with stat (same
way as with Owner), but in addition to that it also holds the same
values for the parent directory. It would seem that doing this in some
other way, ie. in ReadDir, would require modifying the ReadDir
interface which seems a too large modification for a feature this
small.

This change introduces a duplication of 'stat' call to the files, as
the Owner feature already does a separate call. I doubt the
performance implications are noticeable, though with some refactoring
both Owner and Device fields could be filled in in one go.

Filling in the field has been placed in fs/localfs/localfs.go where
entryFromChildFileInfo has acquired a third parameter giving the the
parent entry. From that information the Device of the parent is
retrieved, to be passed off to platformSpecificDeviceInfo which does
the rest of the paperwork. Other fs implementations just put in the
default values.

The Dev and Rdev fields returned by the 'stat' call have different
sizes on different platforms, but for convenience they are internally
handled the same. The conversion is done with local_fs_32bit.go and
local_fs_64bit.go which are conditionally compiled on different
platforms.

Finally the actual check of the condition is in ignorefs.go function
shouldIncludeByDevice which is analoguous to the other similarly named
functions.

Co-authored-by: Erkki Seppälä <flux@inside.org>
2020-10-14 22:45:32 -07:00
Jarek Kowalski
c7be3a0c87 testing: added performance benchmark (#618)
The benchmarks creates 20 GB of files in different configurations

* 10 x 2 GB files
* 100 x 200 MB files
* 1000 x 20 MB files

and backs them up to a local filesystem repository measuring time,
CPU and RAM usage.

The benchmarking script uses GCP instance (n1-standard-8) with fast NVME
flash to eliminate local filesystem latency.

Current performance numbers show major improvement in latency in
0.7.0-rc1 due to splitter throughput optimization (#606).
2020-09-15 21:30:08 -07:00
Jarek Kowalski
b381d31eb8 tools: added apt-publish tool that push to APT repository
The repository is in GCS and the script will automatically copy
DEB files from dist/ to the proper locations and will regenerate
APT package index.
2020-08-14 14:08:10 -07:00
Jarek Kowalski
11d6eb1c6c Added unit tests for HTML UI to make it a bit harder to regress.
Covered are:

- connect and create flow
- parameter pages for all providers
- connect using token
2020-02-19 18:22:45 -08:00
Jarek Kowalski
bc4f1f76fe kopia-ui: pass missing environment variables to Electron build on Travis 2020-02-01 12:55:51 -08:00
Jarek Kowalski
e8a1eaa9ee htmlui: added experimental HTML-based UI
This is enabled by `kopia server --ui` and can be viewed in a browser
at http://localhost:51515/

Right now it can only list snapshots and policies (barely).
2019-11-20 14:41:38 -08:00
Jarek Kowalski
0699fcfbea reorganized icons into separate directory, added PNG and ICO versions 2019-11-11 18:54:06 -08:00
Jarek Kowalski
671a63aa24 travis: generate repository snapshot for long-term storage
This is triggered for tagged releases and will be used later for
long-term repository compatibility testing.
2019-08-12 19:32:25 -07:00
Jarek Kowalski
8ada9587f3 travis: added encrypted 'known_hosts' file for sftp testing 2019-07-16 20:29:39 -10:00
Jarek Kowalski
975824768e sftp: added encrypted e2e test credentials 2019-07-14 10:25:10 -07:00
Jarek Kowalski
b16e19dc64 fixing gcs credentials, try #3 - regenerated new SA JSON key 2019-07-04 10:56:50 -07:00
Jarek Kowalski
72520029b0 golangci-lint: added more linters
Also fixed pre-existing lint errors.
2019-06-02 22:56:57 -07:00
Jarek Kowalski
e111821b8d Makefile: added include for Makefile.local which can be used to create custom targets and overrides 2019-05-31 20:59:06 -07:00
Jarek Kowalski
782bc581d0 Makefile: switched to golangci-lint 2019-04-01 18:47:10 -07:00
Jarek Kowalski
a5b33944eb added 'repo connect from-config' for importing existing config across machines 2019-01-06 17:07:48 -08:00
Jarek Kowalski
93e03635fe added dist/ to .gitignore 2018-09-09 18:24:12 -07:00
Jarek Kowalski
cbcdfa2eb6 switched coverage to native go test 2018-06-23 16:32:47 -07:00
Jarek Kowalski
af62a902a9 gitignore 2017-08-01 08:29:40 +02:00
Jarek Kowalski
d38a3afa92 git ignore for vscode 2017-06-17 15:59:21 -07:00
Jarek Kowalski
dcd7e0f76f godoc cleanup, hiding internal APIs 2016-08-21 08:28:40 -07:00
Jarek Kowalski
e528b32748 Major refactoring of data formats to use protobuf instead of JSON. This is a breaking change to data formats, but hoping to stabilize soon.
This change removes lots of pointless string and custom format parsing code and instead relies on protobuf to do the thing. JSON is still an option thanks to proto3-generated output.

- Refactored ObjectID to use protobuf
- Indirect blocks to use protobuf (in the form of seek table)
- Added generic proto stream reader and writer
- ObjectIDFormat became proto enum

Also:

- fixed major issue where indirect object ID entries were not encrypted, since they were storing block IDs and not object IDs.
- dropped support for majority of formats, only supporting HMAC-{SHA256,SHA512,SHA512_384} hashes with AES256.
This produces object IDs of 32 or 64 characters long.
- changed how pretty-printing works for 'kopia show'
2016-08-20 16:59:10 -07:00
Jarek Kowalski
0e6723def8 added SHA256 checksum to release 2016-07-30 12:53:28 -07:00
Jarek Kowalski
9a5184334d updated release binary names 2016-07-29 15:38:03 -07:00
Jarek Kowalski
69519f9eff added github releases to travis 2016-07-29 07:23:31 -07:00
Jarek Kowalski
d3a68a7055 initial 2016-03-21 20:08:35 -07:00