pub struct RSync { /* private fields */ }Implementations
sourceimpl RSync
impl RSync
pub fn new(source: ReaderWriter, dest: ReaderWriter) -> Self
pub fn with_restore_fs_mtime(self, restore_fs_mtime: bool) -> Self
sourcepub async fn sync(
&self
) -> impl Stream<Item = RSyncResult<impl Future<Output = RSyncResult<RSyncStatus>> + '_>> + '_
pub async fn sync(
&self
) -> impl Stream<Item = RSyncResult<impl Future<Output = RSyncResult<RSyncStatus>> + '_>> + '_
Sync synchronize source to destination by comparing crc32c if destination already exists
Example
use std::{path::PathBuf, str::FromStr};
use futures::{StreamExt, TryStreamExt};
use gcs_rsync::{
storage::credentials::authorizeduser,
sync::{RSync, RSyncResult, ReaderWriter},
};
#[tokio::main]
async fn main() -> RSyncResult<()> {
let token_generator = Box::new(authorizeduser::default().await.unwrap());
let home_dir = ".";
let test_prefix = "bucket_prefix_to_sync";
let bucket = "bucket_name";
let source = ReaderWriter::gcs(token_generator, bucket, test_prefix)
.await
.unwrap();
let dest_folder = {
let mut p = PathBuf::from_str(home_dir).unwrap();
p.push(test_prefix);
p
};
let dest = ReaderWriter::fs(dest_folder.as_path());
let rsync = RSync::new(source, dest);
rsync
.sync()
.await
.try_buffer_unordered(12)
.for_each(|x| {
println!("{:?}", x);
futures::future::ready(())
})
.await;
Ok(())
}sourcepub async fn mirror(
&self
) -> impl Stream<Item = RSyncResult<impl Future<Output = RSyncResult<RMirrorStatus>> + '_>> + '_
pub async fn mirror(
&self
) -> impl Stream<Item = RSyncResult<impl Future<Output = RSyncResult<RMirrorStatus>> + '_>> + '_
Mirror synchronize source to destination by deleting extras (destination)
Example
use std::{path::PathBuf, str::FromStr};
use futures::{StreamExt, TryStreamExt};
use gcs_rsync::{
storage::credentials::authorizeduser,
sync::{RSync, RSyncResult, ReaderWriter},
};
#[tokio::main]
async fn main() -> RSyncResult<()> {
let token_generator = Box::new(authorizeduser::default().await.unwrap());
let home_dir = ".";
let test_prefix = "bucket_prefix_to_sync";
let bucket = "bucket_name";
let source = ReaderWriter::gcs(token_generator, bucket, test_prefix)
.await
.unwrap();
let dest_folder = {
let mut p = PathBuf::from_str(home_dir).unwrap();
p.push(test_prefix);
p
};
let dest = ReaderWriter::fs(dest_folder.as_path());
let rsync = RSync::new(source, dest);
rsync
.mirror()
.await
.try_buffer_unordered(12)
.for_each(|x| {
println!("{:?}", x);
futures::future::ready(())
})
.await;
Ok(())
}Auto Trait Implementations
impl !RefUnwindSafe for RSync
impl !Send for RSync
impl !Sync for RSync
impl Unpin for RSync
impl !UnwindSafe for RSync
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
Attaches the provided Subscriber to this type, returning a
WithDispatch wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber to this type, returning a
WithDispatch wrapper. Read more