Please note: We have not had any release yet, so the code is still alpha-code!
Syncany is an open-source cloud storage and filesharing application. It allows users to backup and share certain folders of their workstations using any kind of storage, e.g. FTP, Amazon S3 or Google Storage.
While the basic idea is similar to Dropbox and JungleDisk, Syncany is open-source and additionally provides data encryption and more flexibility in terms of storage type and provider:
- Data encryption: Syncany encrypts the files locally, so that any online storage can be used even for sensitive data.
- Arbitrary storage: Syncany uses a plug-in based storage system. It can be used with any type of remote storage.
Directly jump to ...
- Documentation, diagrams and screencasts
- Build and installation
- Sample usage
- Setup Eclipse IDE for development
- How can I help?
- Licensing, website and contact
There is quite a bit of reading material on Syncany already. Check out the following links:
Posts and papers
- Blog post: Syncany explained: idea, progress, development and future (part 1) (Oct 2013)
- Master's thesis: Minimizing remote storage usage and synchronization time using deduplication and multichunking: Syncany as an example (2011)
Screencasts
- Screencast: Developer How-to - Checkout code, compile and run two clients on Linux, using FTP plugin (14 minutes)
- Screencast: Conflict handling on Linux, using local plugin (2 minutes)
- Screencast: Setup Amazon S3 for two users, and sync two clients with Syncany (9 minutes)
Diagrams
- Diagram: Syncany application flow example
- Diagram: Chunking framework class diagram
- Diagram: Storage plugins class diagram
- Diagram: Database class diagram
JavaDoc
We have a quite exhaustive JavaDoc (or at least we're trying to build it up). If you're a developer, be sure to check that out. A few starting points:
- Command line interface: Syncany.java, Command.java
- Chunking framework: Deduper.java, Chunker.java, MultiChunker.java
- Storage plugins: Plugins.java, Connection.java
- Cryptography / Encryption: MultiCipherOutputStream.java, CipherSpec.java, CipherSession.java
Requirements: Syncany is based on Java 7, so you need that installed. We use Ivy for dependency management, and Ant as a build tool. If you have those things, it should be pretty easy.
1. Install requirements, checkout code and build
apt-get install git ivy ant
git clone http://github.com/binwiederhier/syncany
cd syncany
ant
2. Install on your system, as 'root' (Linux) or 'Administrator' (Windows)
ant install
If you do not want to permanently install Syncany on your system, but just try it out, you can use ant fakeinstall
to only link to the current folder.
3. Run it!
syncany --help
On Windows, it is necessary to open a new terminal window to be able to call the syncany
command. Linux additionally allows you to use sy
instead of syncany
as an abbreviation.
Usage is pretty similar to a version control system. If you have used Git or SVN, it should feel a lot alike.
1. Initialize a local directory
$ syncany init
Choose a storage plugin. Available plugins are: ftp, local, s3
Plugin: ftp
Connection details for FTP connection:
- hostname: myhost.example.com
- username: myuser1
- password: somepassword1
- port (optional):
The password is used to encrypt data on the remote storage.
Please choose it wisely.
Password: (secret password)
Confirm: (repeat it)
This sets up a new repository on the given remote storage and initializes the local folder. You can now use syncany connect
to connect to this repository from other clients.
2. Add files and synchronize
To let Syncany do everything automatically, simple use the syncany watch
command. This command will synchronize your local files in a given interval.
$ syncany watch --interval=20
You can also manually trigger the upload of your local files or the download of remote changes:
$ syncany up
$ syncany down
For a detailed demo, please refer to a screencast.
-
Be sure to install Git, Ivy and Ant on your system. On Debian-based systems, for instance:
apt-get install git ivy ant
-
Open Eclipse and create a new workplace, e.g. at "/home/user/workplace"
-
Checkout Syncany on the command line:
cd /home/user/workplace git clone http://github.com/binwiederhier/syncany mv syncany SyncanyCore <<< Important!
-
In Eclipse, go to Help -> Install New Software -> Add ... Location: http://www.apache.org/dist/ant/ivyde/updatesite
-
Install plugin "Apache Ivy library" and "Apache IvyDE"
-
In Eclipse, go to File -> Import ... -> Existing Projects Into Workplace -> Select Root Directory -> Select "/home/user/workplace/SyncanyCore"
-
Add ivy.xml to Ivy Library: Right-click on ivy.xml -> Add Ivy Library...
-
Add ivysettings.xml to Ivy settings path: Windows -> Preferences -> Ivy -> Settings ... Chose "Workspace..." below "Ivy settings path:" and add the ivysettings.xml within the workspace
-
Run the build.xml as Ant Build
Check out the TODO list for starting points. If you have questions, don't hesitate to ask!
Syncany is licensed under the GPLv2 open source license. It is mainly developed by Philipp C. Heckel and Steffen Dangmann. We are always looking for people to join or help out. Feel free to contact us:
- Syncany website, still with screenshots of the old interface
- @syncany on Twitter, somewhat quiet there, though ...
- Mailing list, still on Launchpad