NeSync icon indicating copy to clipboard operation
NeSync copied to clipboard

Local file sync & backups

NeSync 128px_version-control_5815495

Pronounced as Any Sync.

NeSync is a modern backup/sync software for desktop with a GUI.
It monitors your filesytem for events (modification, create, delete and move) then adds detected changes to your files in historical order. In each revision you can add description to changed file. It works with every file format and compatible with Linux, Windows and MacOS.

NeSync uses intenal filesystem which is OS independent. That is, you create your own folder tree inside the app then assign this folders to your OS file system. This allows you to transfer your folder tree (with historical changes) from computer to computer (even between different OSes). Transfers are done via zip files (manually exported and imported as zip by the user).

NeSync does not connect to the internet and works offline completely.
NeSync is Free and open-source software (FOSS) and source code licensed under GPL v3 (completely open to the public).

WARNING: NeSync is currently in pre-alpha stage and it's not complete yet.

Executables are available in the Releases page.

Screenshots

Folder Monitor

monitor

File Explorer

mainwindow

Backup Import Screen

import

Features

  • Fully multi-threaded architecture
  • Small memory footprint
  • Designed for modern OSes (Minimum required OS: Windows 10 1809 or Linux kernel 5.4)
  • Complete privacy (no internet connection at all)

Outline

  • Few important notes
  • Building
  • Contributing
  • Future plans
  • Thanks to

Few important notes

  1. You will see different project names in the git history such as XdBackup and BoldBackup.
    These are old names for the NeSync.

  2. If you detect network activity related with NeSync process you can safely ignore it.
    This activities probably generated by the OS. Especially on Windows (see VirusTotal link in download section).

  3. MacOS support is not properly tested and I DO NOT provide official builds currently.

  4. When importing a zip file, json schema of import.json IS NOT verified.
    This is a huge security risk. Only import files which you know the source.

Building

  • Only CMake is supported (both on Linux and Windows).
  • Minimum Qt 6.3 required.
  • Compiling in all platforms tested with gcc compiler (MinGW on Windows).
  • I've never tested MSVC.
    git clone https://github.com/fxdeniz/NeSync.git
    git submodule update --init
  • Building on Linux

    1. Install Qt 5 Compability Module from Qt Maintaince Tool.

    2. Install zlib-devel and bzip2-devel (on fedora) OR zlib1g-dev and libbz2-dev (on debian).

    3. Then compile using Qt Creator.

  • Building on Windows

    1. Install Qt 5 Compability Module from Qt Maintaince Tool.

    2. Then download zlib and bzip2 from MSYS2.

    3. Extract the zips.

    4. Copy the content of the extracted zips to matching folders of your MinGW directory.
      Example MinGW directory C:\Qt\Tools\mingw1120_64\. This directory is created when installing Qt 6.4 and Qt 6.5. If you have different Qt version then your C:\Qt\Tools\mingwXXXX_XX\ will be different.
      Example for zlib:

           mingw64\bin\zlib1.dll       --->    C:\Qt\Tools\mingw1120_64\bin\zlib1.dll
      
           mingw64\include\zlib.h      --->    C:\Qt\Tools\mingw1120_64\include\zlib.h        
           mingw64\include\zconf.h     --->    C:\Qt\Tools\mingw1120_64\include\zconf.h
      
           mingw64\lib\libz.a          --->    C:\Qt\Tools\mingw1120_64\lib\libz.a
           mingw64\lib\libz.dll.a      --->    C:\Qt\Tools\mingw1120_64\lib\libz.dll.a
      

      Do the same for bzip2.

    5. Then compile using Qt Creator.

Contributing

I use camel case notation where only class initals are capitalized.
And Allman style indentation with tab equal to 4 spaces.

Example:

    class ExampleClass
    {
        void doSomething()
        {
            if(x == y)
                doOtherThing();
            else
            {
                doLongConditionalItem1();
                doLongConditionalItem2();                    
            }
        }
    };
  1. Create an issue.
  2. Make a pull request linked to a created issue.

Future plans

For the near future I'm planning to add these features:

  1. Documentation for the code (compatible with Doxygen)
  2. Local logging

Thanks to