Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,8 @@ rc rb local/my-bucket
# Recursively copy directory
rc cp -r ./local-dir/ local/bucket/remote-dir/

# Mirror between S3 locations
rc mirror local/bucket1/ local/bucket2/
# Mirror between the local filesystem and RustFS
rc mirror ./local-dir/ local/bucket/backup/

# Find objects
rc find local/bucket --name "*.txt" --newer 1d
Expand Down Expand Up @@ -363,7 +363,7 @@ For full command documentation, see the [`rc` command reference](docs/reference/
| `find` | Find objects |
| `anonymous` | Manage anonymous access to buckets and objects |
| `diff` | Compare two locations |
| `mirror` | Mirror sync between S3 locations |
| `mirror` | Mirror local and S3-compatible directory trees |
| `tree` | Tree view display |
| `share` | Generate presigned URLs |
| `event` | Manage bucket event notifications |
Expand Down
2 changes: 2 additions & 0 deletions crates/cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ rc-s3 = { workspace = true }
# Async runtime
tokio.workspace = true
futures.workspace = true
async-trait.workspace = true

# CLI
clap.workspace = true
Expand Down Expand Up @@ -51,6 +52,7 @@ jiff.workspace = true
humansize.workspace = true
humantime.workspace = true
mime_guess.workspace = true
tempfile.workspace = true
glob.workspace = true
shlex.workspace = true
urlencoding.workspace = true
Expand Down
4 changes: 2 additions & 2 deletions crates/cli/src/commands/cp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -724,7 +724,7 @@ fn build_transfer_controls(args: &CpArgs) -> Result<TransferControls, String> {
Ok(controls)
}

fn parse_age_cutoff(value: &str, now: Timestamp) -> Result<Timestamp, String> {
pub(super) fn parse_age_cutoff(value: &str, now: Timestamp) -> Result<Timestamp, String> {
let value = value.trim();
if value.is_empty() {
return Err("Transfer age must not be empty".to_string());
Expand Down Expand Up @@ -762,7 +762,7 @@ fn parse_rewind_cutoff(value: &str, now: Timestamp) -> Result<Timestamp, String>
.map_err(|error| format!("Invalid rewind value '{value}': {error}"))
}

fn parse_byte_rate(value: &str) -> Result<u64, String> {
pub(super) fn parse_byte_rate(value: &str) -> Result<u64, String> {
let normalized = value.trim().to_ascii_lowercase();
let normalized = normalized
.strip_suffix("/s")
Expand Down
Loading
Loading