pub enum Backend {
S3(S3Backend),
Azure(AzureBackend),
Gcs(GcsBackend),
B2(B2Backend),
Filesystem(FilesystemBackend),
Sftp(SftpBackend),
WebDav(WebDavBackend),
Rclone(RcloneBackend),
Gdrive(GdriveBackend),
}Expand description
The discriminated backend union (backend: { s3: {...} }); exactly one variant by construction.
Variants§
S3(S3Backend)
Amazon S3 or any S3-compatible object store (MinIO, RustFS, Ceph RGW, …).
Azure(AzureBackend)
Azure Blob Storage.
Gcs(GcsBackend)
Google Cloud Storage.
B2(B2Backend)
Backblaze B2.
Filesystem(FilesystemBackend)
A local filesystem path, backed by a PVC the operator mounts into the mover.
Sftp(SftpBackend)
SFTP server.
WebDav(WebDavBackend)
WebDAV endpoint.
Rclone(RcloneBackend)
Any rclone remote (kopia shells out to rclone), broadening reach to
providers without a native kopia backend.
Gdrive(GdriveBackend)
Google Drive via kopia’s native gdrive provider (service-account JSON).
kopia marks this provider experimental / not maintained, and a native
gdrive repository is not interchangeable with an rclone-backed Drive remote.
Implementations§
Source§impl Backend
impl Backend
Sourcepub fn kind_str(&self) -> &'static str
pub fn kind_str(&self) -> &'static str
Stable discriminant string for status/metrics/printcolumns.
Returns the variant’s PascalCase name, independent of the camelCase wire
key (backend: { s3: ... } deserializes to Backend::S3, whose
kind_str() is "S3").
use kopiur_api::backend::{Backend, FilesystemBackend};
let b = Backend::Filesystem(FilesystemBackend {
path: "/repo".into(),
volume: None,
});
assert_eq!(b.kind_str(), "Filesystem");
// The wire key is camelCase, but the discriminant stays PascalCase.
let s3: Backend = serde_json::from_value(serde_json::json!({
"s3": { "bucket": "my-backups" }
}))
.unwrap();
assert_eq!(s3.kind_str(), "S3");Trait Implementations§
Source§impl<'de> Deserialize<'de> for Backend
impl<'de> Deserialize<'de> for Backend
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for Backend
impl JsonSchema for Backend
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreimpl Eq for Backend
impl StructuralPartialEq for Backend
Auto Trait Implementations§
impl Freeze for Backend
impl RefUnwindSafe for Backend
impl Send for Backend
impl Sync for Backend
impl Unpin for Backend
impl UnsafeUnpin for Backend
impl UnwindSafe for Backend
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more