holepunchto / drives

CLI to download, seed, and mirror a Hyperdrive or Localdrive
Apache License 2.0
24 stars 10 forks source link

drives

CLI to seed, mirror, and serve a Hyperdrive or Localdrive

npm i -g drives

Usage

Usage: drives [command] [options]

Commands:
  init                     Initializes a new storage on the cwd
  touch                    Create a writable Hyperdrive
  mirror <src> <dst>       Mirror a drive into another drive
  ls <src> [path]          List files of the drive
  seed [key]               Share a Hyperdrive
  download <key>           Archive download a Hyperdrive by key
  serve <src>              Creates a HTTP drive server
  put <src> <path> <blob>  Create a file
  entry <src> <path>       Show a single entry file
  get <src> <path>         Show the file content
  rm <src> <path>          Delete a file
  info <key>               Show info about the Hyperdrive
  purge <key>              Delete all local storage of the drive

API

Use drives --help for more information, drives mirror --help, etc.

Storage

By default, it tries to use .drives from the current directory.

If it doesn't exists then it will go back ../ until it finds an existing .drives.

If it doesn't find anything, then it will create and use a global folder at ~/.drives.

You can always set --storage [path] to force a different location.

Initialize

It creates the .drives storage folder in the current working directory.

drives init
# Notice: new storage at /home/user/Desktop/my-project/.drives/corestore

Useful to avoid doing a parent lookup, and not using the home folder.

Create a writable Hyperdrive

drives touch
# New drive: <z32 key>

Mirror any drive into another

Source and destination can be a folder path or a drive key.

drives mirror <src> <dst>

Use --live for real-time mirroring.

Use --dry-run to disable writing changes. There is --help for more.

Note: it ignores .drives, .git, .github, .DS_Store, and package-lock.json entries.

List files

drives ls <key or path>

Share a drive

drives seed [my-drive-key]

Archive download a Hyperdrive

Continuous download with all past historical states, useful to checkout on older versions:

drives download <my-drive-key>

Serve a drive via HTTP

drives serve <key or path>
# HTTP server on http://localhost:5000

URL requests are like /path/to/file, i.e. http://localhost:5000/index.js.

For security, requests to /.drives/* are rejected, so mind the storage location!

Show storage size, version, etc

drives info <my-drive-key>

License

Apache-2.0