#amazon-s3 #fs #sync

filesync

Sync files between different sources

5 releases

Uses new Rust 2024

new 0.2.1 Oct 30, 2025
0.2.0 Feb 25, 2025
0.1.2 Nov 15, 2023
0.1.1 Nov 15, 2023
0.1.0 Sep 7, 2023

#1454 in Filesystem

CC0 license

33KB
735 lines

Crate for syncing files between (theoretically) arbitrary sources. For example, syncing local files to an S3 bucket.

Example

use filesync::{
    local::LocalFiles,
    s3::S3Files,
};

let config = aws_config::load_from_env().await;
let client = aws_sdk_s3::Client::new(&config);

let mut local = LocalFiles::new("./my_local_files", true);
let mut s3 = S3Files::new(client, "my_s3_bucket", "path/in/bucket", true);

let synced_paths = filesync::sync_one_way(&mut local, &mut s3).await?;
assert_eq!(synced_paths, vec![PathBuf::from("my_changed_file.txt")]);

filesync
[![build_badge]][build_url] docs_badge crates_badge

Simple Rust library to sync files between different sources.

Currently supports:

  1. Local files
  2. S3 (s3 feature)

Usage

use filesync::{
    local::LocalFiles,
    s3::S3Files,
};

let config = aws_config::load_from_env().await;
let client = aws_sdk_s3::Client::new(&config);

let mut local = LocalFiles::new("./my_local_files", true);
let mut s3 = S3Files::new(client, "my_s3_bucket", "path/in/bucket", true);

let synced_paths = filesync::sync_one_way(&mut local, &mut s3).await?;
assert_eq!(synced_paths, vec![PathBuf::from("my_changed_file.txt")]);

Dependencies

~5–23MB
~248K SLoC