cozy-desktop

0.13.0 • Public • Published

Cozy Desktop (alpha)

Build Status

The Cozy desktop app allows to sync the files stored in your Cozy with your laptop and/or your desktop. It replicates your files on your hard drive and apply changes you made on them on other synced devices and on your online Cozy.

Note: the code is currently alpha quality. But it's moving fast and we plan to do a more stable release in the coming weeks. Stay tuned!

⚠️ Backup your data before playing with cozy-desktop!

CLI Install

The cozy-desktop requires node.js (4 recommended, but it is tested on 0.10 and 5 too) and build tools.

For example, you can install them on debian with:

sudo apt-get install nodejs-legacy build-essential

Then you can install cozy-desktop via NPM:

sudo npm install cozy-desktop -g

Note: if you see a warning about fsevents and you are not on OSX, you can safely ignore it. fsevents is an optional dependency that is only used on OSX.

CLI Running

Configure it with your remote Cozy and your local directory:

cozy-desktop add-remote-cozy https://url.of.my.cozy/ ~/cozy

It will synchronize your local directory ~/cozy with your remote cozy.

Then start synchronization daemon:

cozy-desktop sync

Other commands can be listed with

cozy-desktop -h

Advanced use cases

It's possible to make cozy-desktop ignore some files and folders by using a .cozyignore file. It works pretty much like a .gitignore, ie you put patterns in this file to ignore. The rules for patterns are the same, so you can look at git documentation to see for their format. For example:

*.mp4
heavy-*
/tmp

Cozy-desktop keeps the metadata in a pouchdb database. If you want to use several synchronized directories, you'll have to tell cozy-desktop to keeps its metadata database somewhere else. The COZY_DESKTOP_DIR env variable has this role.

For example, if you want to add a second synchronized directory, you can do:

export COZY_DESKTOP_DIR=/sync/other
cozy-desktop add-remote-cozy https://url.of.my.others.cozy/ /sync/other
cozy-desktop sync

Limitations

Cozy-desktop is designed to synchronize files and folders between a remote cozy instance and a local hard drive, for a personal usage. We tried to make it simple and easy. So, it has some limitations:

  • It's only a command-line interface and it is tested only on Linux for the moment. We are working to improve this in the next weeks.

  • Files and folders named like this are ignored:

    • .cozy-desktop (they are used to keep internal state)
    • _design (special meaning for pouchdb/couchdb)
  • It's not a particularly good idea to share code with cozy-desktop:

    • node_modules have tons of small files
    • compiled code often has to be recompile to works on another environment
    • git and other VCS are not meant to be share like this. You may lose your work if you make changes on two laptops synchronized by cozy-desktop (it's the same with dropbox, google-drive, syncthing, etc.)
  • If the same file has been modified in parallel, cozy-desktop don't try to merge the modifications. It will just rename of one the copies with a -conflict suffix. It's the same for folders.

  • We expect a personal usage:

    • a reasonable number of files and folders (< 1.000.000)
    • a reasonable number of files per folder (< 10.000)
    • a reasonable size for files (< 1 To)
    • a reasonable size for files and folders path (< 1024 bytes)
    • not too many changes
    • etc.
  • For OSX, filenames with weird unicode characters may be problematic in some rare cases.

  • Symbolic links and ACL are not yet handled.

  • The full sync directory must be on the same partition.

  • Large files must be uploaded/downloaded in one time (we are thinking about making it possible to split a large file in several blocks for download/upload).

  • Due to its nature, cozy-desktop needs resources:

    • CPU, for checksums in particular
    • RAM, to keep all the metadata in memory, and for nodejs libraries
    • Disk, but the overhead from cozy-desktop is low
    • Network bandwidth obviously
  • No advanced feature, like P2P replication between several cozy-desktop instances.

Development documentation

You can read more documentation for developer:

License

Cozy Desktop Client is developed by Cozy Cloud and distributed under the AGPL v3 license.

What is Cozy?

Cozy Logo

Cozy is a platform that brings all your web services in the same private space. With it, your web apps and your devices can share data easily, providing you with a new experience. You can install Cozy on your own hardware where no one profiles you.

Community

You can reach the Cozy Community by:

  • Chatting with us on IRC #cozycloud on irc.freenode.net
  • Posting on our Forum
  • Posting issues on the Github repos
  • Mentioning us on Twitter

Package Sidebar

Install

npm i cozy-desktop

Weekly Downloads

2

Version

0.13.0

License

AGPL-3.0

Last publish

Collaborators

  • mycozycloud