"rsync for cloud storage" - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Azure Blob, Azure Files, Yandex Files
Go to file
Carl Edquist 7130a6d2e4 terminal: use stderr for terminal progress output, etc
Avoid mixing rclone command output with progress output by sending
terminal output to stderr.

Discussion:

The --progress option produces output designed for the terminal, and the
terminal library sent all its output to stdout.

This is a problem for any command that produces output for further
processing, when combined with --progress, because the main command
output and the progress output are then sent together to stdout.

This is most obviously a problem for the rclone 'cat' command.  Say you
want to retrieve a large file but output to a pipe for further
processing, rather than write it to a file.  But you also want rclone to
display its progress output as you wait for the transfer.  Because both
the 'cat' output and the progress output go to stdout, this leaves the
progress output as garbage data within the streamed cat output, and also
prevents the progress output from being displayed.

Notably, other rclone commands like 'ls', 'lsjson', and even 'm5dsum',
produce meaningful progress output with the --progress option, but when
mixed with the regular command output, it makes both the progress output
and the command output unusable.

The simple solution here is to send output intended for the terminal
(including progress output) to stderr instead of stdout.  This way the
rclone command output can be redirected as desired from stdout, and the
progress output will still go to the terminal attached to stderr.

If for some reason the user wants to capture/redirect the
terminal/progress output for some other purpose, stderr can be
redirected instead.
2022-09-30 15:13:36 -05:00
.github build: update GitHub actions to latest versions 2022-09-19 19:51:07 +01:00
backend ftp: increase timeouts on tests as they were failing locally 2022-09-19 19:45:52 +01:00
bin build: update tidy-beta to new layout 2022-09-12 20:32:17 +01:00
cmd docs/sftp: document use of chunk_size option in sftp remote paired with serve sftp 2022-08-31 00:04:04 +02:00
cmdtest all: fix spelling across the project 2022-08-30 11:16:26 +02:00
contrib serve/docker: build docker plugin for multiple platforms #5668 2021-10-21 13:01:23 +03:00
docs docs: improve description of make command in install docs 2022-09-28 16:14:12 +02:00
fs fs: warn the user when using a remote name without a colon 2022-09-13 18:06:19 +01:00
fstest all: fix spelling across the project 2022-08-30 11:16:26 +02:00
graphics build: Add file properties and icon to Windows executable (fixes #4304) 2020-06-11 09:26:14 +01:00
lib terminal: use stderr for terminal progress output, etc 2022-09-30 15:13:36 -05:00
librclone all: fix spelling across the project 2022-08-30 11:16:26 +02:00
vfs all: fix spelling across the project 2022-08-30 11:16:26 +02:00
.gitattributes build: add azure pipelines build 2019-08-06 10:31:32 +01:00
.gitignore chunker: fix md5all test for no-meta test remotes 2021-10-18 18:04:07 +03:00
.golangci.yml build: fix lint option max-issues-per-linter 2022-09-14 12:11:54 +01:00
CONTRIBUTING.md all: fix spelling across the project 2022-08-30 11:16:26 +02:00
COPYING Initial commit - some small parts working 2012-11-18 17:32:31 +00:00
Dockerfile build: add an rclone user to the Docker image but don't use it by default 2021-02-11 17:45:44 +00:00
go.mod ftp: Add force_list_hidden option 2022-09-14 12:10:58 +01:00
go.sum ftp: Add force_list_hidden option 2022-09-14 12:10:58 +01:00
MAINTAINERS.md storj: rename tardigrade backend to storj backend #5616 2022-02-11 11:04:15 +00:00
Makefile Configurable version suffix independent of version number 2022-05-17 12:10:01 +01:00
MANUAL.html Version v1.59.0 2022-07-09 18:09:25 +01:00
MANUAL.md Version v1.59.0 2022-07-09 18:09:25 +01:00
MANUAL.txt Version v1.59.0 2022-07-09 18:09:25 +01:00
notes.txt docs: spelling: etc. 2020-10-28 18:16:23 +00:00
rclone.1 Version v1.59.0 2022-07-09 18:09:25 +01:00
rclone.go lib: add plugin support 2019-09-29 11:05:10 +01:00
README.md s3: add support for IONOS Cloud Storage 2022-09-15 16:04:34 +01:00
RELEASE.md build: update tidy-beta to new layout 2022-09-12 20:32:17 +01:00
VERSION Start v1.60.0-DEV development 2022-07-09 20:43:17 +01:00

rclone logo rclone logo

Website | Documentation | Download | Contributing | Changelog | Installation | Forum

Build Status Go Report Card GoDoc Docker Pulls

Rclone

Rclone ("rsync for cloud storage") is a command-line program to sync files and directories to and from different cloud storage providers.

Storage providers

Please see the full list of all storage providers and their features

Virtual storage providers

These backends adapt or modify other storage providers

  • Alias: rename existing remotes 📄
  • Cache: cache remotes (DEPRECATED) 📄
  • Chunker: split large files 📄
  • Combine: combine multiple remotes into a directory tree 📄
  • Compress: compress files 📄
  • Crypt: encrypt files 📄
  • Hasher: hash files 📄
  • Union: join multiple remotes to work together 📄

Features

  • MD5/SHA-1 hashes checked at all times for file integrity
  • Timestamps preserved on files
  • Partial syncs supported on a whole file basis
  • Copy mode to just copy new/changed files
  • Sync (one way) mode to make a directory identical
  • Check mode to check for file hash equality
  • Can sync to and from network, e.g. two different cloud accounts
  • Optional large file chunking (Chunker)
  • Optional transparent compression (Compress)
  • Optional encryption (Crypt)
  • Optional FUSE mount (rclone mount)
  • Multi-threaded downloads to local disk
  • Can serve local or remote files over HTTP/WebDAV/FTP/SFTP/DLNA

Installation & documentation

Please see the rclone website for:

Downloads

License

This is free software under the terms of the MIT license (check the COPYING file included in this package).