Browse Source

Find the list of missing control files

master
Julio Biason 5 years ago
parent
commit
dc7e2a9b33
  1. 50
      src/main.rs

50
src/main.rs

@ -1,9 +1,11 @@
use std::env;
use std::collections::HashSet;
use std::path::Path;
use rusoto_core::Region;
use rusoto_credential::StaticProvider;
use rusoto_core::request::HttpClient;
use rusoto_s3::ListObjectsV2Request;
use rusoto_s3::ListObjectsRequest;
use rusoto_s3::S3;
use rusoto_s3::S3Client;
@ -29,16 +31,40 @@ fn main() {
region
);
let list_objects_request = ListObjectsV2Request {
bucket: bucket.to_owned(),
..Default::default()
};
let mut truncated = Some(true);
let mut start_at = None;
let mut files_dirs: HashSet<String> = HashSet::new();
let mut directory_files: HashSet<String> = HashSet::new();
while truncated.unwrap_or(false) {
let list_objects_request = ListObjectsRequest {
bucket: bucket.to_owned(),
marker: start_at,
..Default::default()
};
println!("Request: {:?}", list_objects_request);
let result = client
.list_objects(list_objects_request)
.sync()
.expect("Can't list contents of buckets");
truncated = result.is_truncated;
start_at = result.next_marker;
result.contents
.expect("Didn't get any objects")
.iter()
.for_each(|item| {
let filename = item.key.as_ref().unwrap();
if filename.ends_with("/") {
files_dirs.insert(filename.clone());
} else {
directory_files.insert(Path::new(filename).parent().unwrap().to_str().unwrap().to_string() + "/");
}
});
}
let _result = client
.list_objects_v2(list_objects_request)
.sync()
.expect("Can't list contents of buckets")
.contents.unwrap()
.iter()
.for_each(|item| { println!("{}", item.key.as_ref().unwrap()) });
println!("Directories with files:\n{:#?}", directory_files);
println!("Directories with controllers:\n{:#?}", files_dirs);
println!("Difference:\n{:#?}", directory_files.difference(&files_dirs));
}

Loading…
Cancel
Save