mirror of https://github.com/dswd/zvault
Remote backups
This commit is contained in:
parent
828bcc6dc9
commit
f53b9a0923
|
@ -98,7 +98,6 @@ Recommended: Brotli/2-7
|
|||
## TODO
|
||||
|
||||
### Core functionality
|
||||
- Keep backup files also remotely and sync them
|
||||
- Options for creating backups (same filesystem, exclude/include patterns)
|
||||
- Recompress & combine bundles
|
||||
- Allow to use tar files for backup and restore (--tar, http://alexcrichton.com/tar-rs/tar/index.html)
|
||||
|
|
|
@ -195,21 +195,21 @@ quick_error!{
|
|||
|
||||
impl Repository {
|
||||
pub fn get_backups(&self) -> Result<HashMap<String, Backup>, RepositoryError> {
|
||||
Ok(try!(Backup::get_all_from(&self.crypto.lock().unwrap(), self.path.join("backups"))))
|
||||
Ok(try!(Backup::get_all_from(&self.crypto.lock().unwrap(), &self.backups_path)))
|
||||
}
|
||||
|
||||
pub fn get_backup(&self, name: &str) -> Result<Backup, RepositoryError> {
|
||||
Ok(try!(Backup::read_from(&self.crypto.lock().unwrap(), self.path.join("backups").join(name))))
|
||||
Ok(try!(Backup::read_from(&self.crypto.lock().unwrap(), self.backups_path.join(name))))
|
||||
}
|
||||
|
||||
pub fn save_backup(&mut self, backup: &Backup, name: &str) -> Result<(), RepositoryError> {
|
||||
let path = self.path.join("backups").join(name);
|
||||
let path = &self.backups_path.join(name);
|
||||
try!(fs::create_dir_all(path.parent().unwrap()));
|
||||
Ok(try!(backup.save_to(&self.crypto.lock().unwrap(), self.config.encryption.clone(), path)))
|
||||
}
|
||||
|
||||
pub fn delete_backup(&self, name: &str) -> Result<(), RepositoryError> {
|
||||
let mut path = self.path.join("backups").join(name);
|
||||
let mut path = self.backups_path.join(name);
|
||||
try!(fs::remove_file(&path));
|
||||
loop {
|
||||
path = path.parent().unwrap().to_owned();
|
||||
|
|
|
@ -28,6 +28,7 @@ use self::bundle_map::BundleMap;
|
|||
|
||||
pub struct Repository {
|
||||
path: PathBuf,
|
||||
backups_path: PathBuf,
|
||||
pub config: Config,
|
||||
index: Index,
|
||||
crypto: Arc<Mutex<Crypto>>,
|
||||
|
@ -60,8 +61,9 @@ impl Repository {
|
|||
try!(config.save(path.join("config.yaml")));
|
||||
let bundle_map = BundleMap::create();
|
||||
try!(bundle_map.save(path.join("bundles.map")));
|
||||
try!(fs::create_dir(&path.join("backups")));
|
||||
Ok(Repository{
|
||||
try!(fs::create_dir_all(&path.join("remote/backups")));
|
||||
Ok(Repository {
|
||||
backups_path: path.join("remote/backups"),
|
||||
path: path,
|
||||
chunker: config.chunker.create(),
|
||||
config: config,
|
||||
|
@ -90,6 +92,7 @@ impl Repository {
|
|||
let index = try!(Index::open(&path.join("index")));
|
||||
let bundle_map = try!(BundleMap::load(path.join("bundles.map")));
|
||||
let mut repo = Repository {
|
||||
backups_path: path.join("remote/backups"),
|
||||
path: path,
|
||||
chunker: config.chunker.create(),
|
||||
config: config,
|
||||
|
|
Loading…
Reference in New Issue