Skip to content

Latest commit

 

History

History
41 lines (22 loc) · 1.75 KB

README.md

File metadata and controls

41 lines (22 loc) · 1.75 KB

pCloud Go client, for the rest of us

This is a pCloud client written in Go for cross-platform compatibility, such as a Raspberry Pi in my use-case.

NOTE: I'm not affiliated to pCloud so this project is as good or as bad as it gets.

Go SDK

See SDK.

Tracker (file system mutations)

See Tracker.

Sync (file system synchronisation)

See Sync.

History

The original driver for this project is to create a pCloud client for my Raspberry Pi4.

While pCloud's console client seemed to tick the boxes, I wasn't able to use it for two reasons:

  • it creates a virtual drive - files are not stored on my local storage as I require. In my set-up, cloud storage is a convenience (backup and remote access), not an extension / replacement of my local storage.
  • I elected to create a mirror from the pCloud virtual drive (that the console-client creates) to my local storage. While this would work well for my needs (using pCloud as the primary source of truth, and the mirror as a local replica), I found that both rsync and unison were confronted to an I/O deadlock when downloading data. The console-client appears to have an issue in its internal cache management and that blocks all I/O. Recovery involves restarting the pCloud console-client daemon but the story repeats again and the mirror cannot complete.

Objectives

  1. ✅ implement a Go version of the SDK.

  2. implement a sync command.

  3. CLI for basic pCloud interactions (copy, move, etc)

  4. Fuse integration (Linux)

pCloud API documentation

The official pCloud API is documented at:

https://docs.pcloud.com