Giter Club home page Giter Club logo

syncfast's People

Contributors

remram44 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

syncfast's Issues

Allow using buffers instead of files

It would be nice if the public API of this crate would allow to call apply_diff and hash_files (or equivalent functions) with buffers that implement the Read, Seek and Write trait (as needed).

It seems like this is already the case for delta::write_delta_file_single.

This would allow for cases where one of the participating files is not accessible by the local file system.

Sync a whole directory

It should be possible to specify directories as old-file and new-file. Then the delta file would contain the path of each file with its delta.

Implement offline sync e.g. rdiff

Something like:

$ syncfast index old/folder
$ syncfast diff -o patch.bin old/folder/.syncfast.idx new/folder
$ syncfast patch patch.bin old/folder

Don't rewrite files that haven't changed

Currently, if a file hasn't changed, a new version of it will still be written to a part file (copying blocks from the local file) and then the part file will be moved over the (identical) file.

It would be good to instead not do anything.

I thought of adding full-file hashes to the index and using that, but that means changing the sync protocol as well (the source needs to send that hash, and the sink needs to request the file if it's different...) Instead I can just delay creating the part file until a block is received that is different (then we copy the file up to that point to the part file, and receive the following blocks).

Back references

The delta stream should be able to reference previously encountered blocks in the output stream, e.g. blocks that appear multiple times should not lead to multiple LITERAL entries (even if they are not in the index).

does it work on Windows?

I developed a small linux server backup application in flutter/dart that runs on a local windows machine, this application backs up servers via SSH/SFTP, but currently it only does full backups, it doesn't do incremental backups and it's quite slow, I I want to port this application to rust, using the lib "syncfast" makes the synchronization of a directory on a linux server to a windows machine?

https://github.com/insinfo/fsbackup

Online sync (rssync)

I'm currently working on offline syncing, the rsdiff binary, which uses files to exchange the index then the delta.

The second step is online syncing, where a socket is used to sync files, for example over SSH.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.