All Projects → p2p-sync → sync

p2p-sync / sync

Licence: Apache-2.0 license
The main repository for P2P-Sync

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to sync

Syncthing Macos
Frugal and native macOS Syncthing application bundle
Stars: ✭ 1,096 (+7206.67%)
Mutual labels:  sync, file-sharing
CombinedPrivacyBlockLists
Ad-blocking hosts files, IP block lists, PAC filters, and ABP / uBO subscriptions, all merged from multiple reputable sources, combined with my own research. Also, script-based utilities to help you create such things yourself. Updated at least once a week, often more frequently.
Stars: ✭ 131 (+773.33%)
Mutual labels:  file-sharing
dot
distributed data sync with operational transformation/transforms
Stars: ✭ 73 (+386.67%)
Mutual labels:  sync
ob bulkstash
Bulk Stash is a docker rclone service to sync, or copy, files between different storage services. For example, you can copy files either to or from a remote storage services like Amazon S3 to Google Cloud Storage, or locally from your laptop to a remote storage.
Stars: ✭ 113 (+653.33%)
Mutual labels:  sync
zeeka
Secure global file sharing using tcp tunnels. Currently tunneling through localtunnel's public servers. Zeeka dedicated servers coming soon.
Stars: ✭ 21 (+40%)
Mutual labels:  file-sharing
Video-Engine-Dash
A Dash plugin for playing back video and optionally syncing video to timestamped CSV Data
Stars: ✭ 26 (+73.33%)
Mutual labels:  sync
sync-fork
the quickest way to sync your fork: npx sync-fork
Stars: ✭ 15 (+0%)
Mutual labels:  sync
sink
Uses Facebook profile pictures to provide high resolution photos for your Google contacts
Stars: ✭ 31 (+106.67%)
Mutual labels:  sync
torrenttools
Commandline tool for inspecting, creating and editing BitTorrent metafiles.
Stars: ✭ 125 (+733.33%)
Mutual labels:  file-sharing
snippets
A Chrome extension that allows you to create and edit JavaScript code snippets, which are synced to all your computers
Stars: ✭ 46 (+206.67%)
Mutual labels:  sync
snapdrop-android
Android client for local file sharing via https://snapdrop.net/
Stars: ✭ 488 (+3153.33%)
Mutual labels:  file-sharing
Ozzillate
Data over sound file transfer web application
Stars: ✭ 124 (+726.67%)
Mutual labels:  file-sharing
drive
Google Drive client for the commandline
Stars: ✭ 6,470 (+43033.33%)
Mutual labels:  sync
Transfer.sh
Easy file sharing from your Android device!
Stars: ✭ 14 (-6.67%)
Mutual labels:  file-sharing
SyncPro
SyncPro is a Windows app for synchronizing files between various online storage providers (OneDrive, Google Drive, Amazon S3, etc.)
Stars: ✭ 39 (+160%)
Mutual labels:  sync
saisoku
Saisoku is a Python module that helps you build complex pipelines of batch file/directory transfer/sync jobs.
Stars: ✭ 40 (+166.67%)
Mutual labels:  sync
s3-cli
Go version of s3cmd
Stars: ✭ 114 (+660%)
Mutual labels:  sync
unicloud
Unison file sync web interface
Stars: ✭ 40 (+166.67%)
Mutual labels:  file-sharing
synx
Better sync package for Go.
Stars: ✭ 20 (+33.33%)
Mutual labels:  sync
bea-content-sync-fusion
Synchronize contents across your Multisite.
Stars: ✭ 41 (+173.33%)
Mutual labels:  synchronisation

P2P-Sync

Build Status Coverage Status

P2P-Sync is a library for distributed file synchronising and sharing. It is a refined version of Hive2Hive. For the underlying functionality to build the P2P network, this library depends on TomP2P.

Implementation details are documented in the wiki.

Features

  • Synchronise a folder among all your nodes in the same network
  • Share particular files or folders with other users in the network
  • Profit from your own personal cloud: All file data is stored only on your peers
  • Messages sent between the nodes are encrypted using RSA resp. AES
  • A console based Java Client is built and waiting for you at P2P-Sync Client

Requirements

  • Java 8
  • Linux / Mac OS X

Install using Maven

To use this library, add the following to your pom.xml:

<repositories>
  <repository>
    <id>sync-mvn-repo</id>
    <url>https://raw.github.com/p2p-sync/sync/mvn-repo/</url>
    <snapshots>
      <enabled>true</enabled>
      <updatePolicy>always</updatePolicy>
    </snapshots>
  </repository>
</repositories>

<dependencies>
  <dependency>
    <groupId>org.rmatil.sync</groupId>
    <artifactId>sync</artifactId>
    <version>0.1-SNAPSHOT</version>
  </dependency>
</dependencies>

Architecture

This library uses multiple components to build the actual file synchronisation and sharing functionality. Each component is maintained in its own repository:

Usage

For more details about particular components and examples how to use them, see the Section Usage in the wiki.

  Path rootDir = Paths.get("path/to/synchronised/folder");
  ITreeStorageAdapter storageAdapter = new LocalStorageAdapter(rootDir);

  // initialise the synchronised folder:
  // - create folder for ObjectStore (usually .sync)
  // - create folders for shared files:
  //    - sharedWithOthers (read-write)
  //    - sharedWithOthers (read-only)
  Sync.init(storageAdapter);

  KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
  KeyPair keyPair = keyGen.genKeyPair();

  RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
  RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();


  ApplicationConfig appConfig = ApplicationConfigFactory.createBootstrapApplicationConfig(
    "Piff Jenkins",
    "ThisIsSafeUseIt",
    "SaltAndPepperMakesTheMealBetter",
    publicKey,
    privateKey,
    ApplicationConfigFactory.getDefaultIgnorePatterns()
  );

  // create a new Sync instance pointing to the root of the
  // specified storage adapter, i.e. path/to/synchronised/folder
  Sync sync = new Sync(storageAdapter);

  // start the node as bootstrap peer (depending on the specified configuration),
  // reconcile state of the synchronised folder with the ObjectStore,
  // reconcile local state with other connected clients of the same user
  NodeLocation nodeLocation = sync.connect(appConfig);

License


  Copyright 2015 rmatil

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].