Important: Please be aware that this is still ALPHA code! Do not use it for important files.
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.
- Any storage: Syncany uses a plug-in based storage system. It can be used with any type of remote storage.
Directly jump to ...
- Download and install daily snapshots
- Sample usage
- Build and test Syncany
- Documentation, diagrams and screencasts
- Setup Eclipse IDE for development
- How can I help?
- Licensing, website and contact
We're building snapshots of the latest master-branch commit as soon as they are committed (older snapshots are removed). At the moment, the build process outputs a *.tar.gz and a *.zip archive, as well as an executable for Windows (*.exe installer) and a Debian/Ubuntu package (*.deb).
To download it, check out the latest builds!
The corresponding JavaDoc and the
JUnit test reports is also available.
Please note: These builds are created from unstable, sometimes erroneous code. Things might change very often and newer versions might not support older repositories. Please do NOT use these builds for important files.
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.
$ syncany watch
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.
0. Requirements: Syncany is based on Java 7 and we use Gradle for dependency management and as build tool. Gradle does all the dependency magic. All you need to build Syncany is a JDK 7. If you like to create a Debian package (optional), you also need FPM installed.
On a Debian-based system that would be:
$ sudo apt-get install openjdk-7-jdk
And optional for building Debian packages (debian task):
$ sudo apt-get install ruby ruby-dev build-essential rubygems
$ sudo gem install fpm
1. Checkout code and build
git clone http://github.com/binwiederhier/syncany
cd syncany
./gradlew installApp (on Linux / Mac OS)
gradlew installApp (on Windows)
This compiles and installs the Syncany command line client to
syncany-cli/build/install/syncany/bin/syncany
. You can run it from there.
2. Install command line client (to run syncany
from anywhere)
To be able to run syncany
(or short: sy
) from anywhere, you can install a
symbolic link on your system. On Linux, the link is placed in /usr/local/bin
,
on Windows, a batch file is placed in C:\Windows
. To do this, run the
following commands:
On Linux / Mac OS:
sudo ./gradlew fakeinstall (on Linux / Mac OS)
On Windows:
- Click Start, type
cmd
, and then press CTRL+SHIFT+ENTER. If a warning appears, click Yes. - In the command box,
cd
to your checkout directory and rungradlew fakeinstall
Please note: There is no easy way to permanently install Syncany on your system, yet. We're working on an installer for Windows, and packages for Linux.
3. Run it!
syncany --help
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)
- Blog post: Deep into the code of Syncany โ CLI, application flow and data model (part 2) (Feb 2014)
- 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
- Diagram: Cryptography concept
Generated JavaDoc and JUnit Reports
The up-to-date JavaDoc of the master branch is always compiled to syncany.org/docs/javadoc. It includes the JavaDoc of all Gradle
modules in the repo. All results of the JUnit tests are compiled to syncany.org/reports. The corresponding distributables for this code are located at syncany.org/dist.
-
Checkout Syncany on the command line:
cd /home/user/workplace git clone http://github.com/binwiederhier/syncany cd syncany
-
Generate Eclipse project files and download dependencies:
./gradlew eclipse (on Linux / Mac OS) gradlew eclipse (on Windows)
-
Open Eclipse and create a new workplace, e.g. at "/home/user/workplace"
-
In Eclipse: File -> Import -> Existing Projects Into Workplace -> Select Root Directory --> Browse
- Select "/home/user/workplace/syncany"
- Tick the Search nested projects checkbox (only available in Eclipse Kepler)
-
Click "Finish"
If you'd like to help developing Syncany, there are a few ways to do so.
-
TODO markers: The Java code contains lots of
TODO
markers, classified in high, medium and low. Using the Tasks tab in Eclipse, pick one or two and start coding. To get started, check out the Setup Eclipse section above. -
Issues, features and tasks: Besides the markers in the code, there are lots of other things that need doing. There is an always up-to-date list in the issue tracker with the label status:help-needed.
If you have questions, feel free to ask. There are maaaany ways to do so. Check out the section below!
Syncany is licensed under the GPLv2 open source license. It is mainly developed by Philipp C. Heckel. 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
- Mailing list, still on Launchpad (active!)
- IRC channel #syncany on Freenode (my nick is binwiederhier)
- @syncany on Twitter, somewhat quiet there, though ...