let tar_file = File::open(&tar_file_path)?;
let input = GzDecoder::new(&tar_file)?;
let mut archive = Archive::new(input);
archive.set_unpack_xattrs(true);
archive.set_overwrite(true);
archive.set_preserve_permissions(true);
archive.set_preserve_mtime(true);
let files = archive.entries()?;
for entry in files {
let mut file = entry?;
let file_path = file.path()?;
if let Some(file_name) = file_path.file_name() {
if file_name.to_str().unwrap() == extract_file_name {
binary_found = true;
file.unpack(&output_file_path)?;
break;
}
}
}
test file: https://github.com/axetroy/prune.rs/releases/download/v0.1.1/prune_darwin_amd64.tar.gz
The origin file size is : 985,384
The unzip file size is : 965,416
I have tested Tar, he works fine
test file: https://github.com/axetroy/prune.rs/releases/download/v0.1.1/prune_darwin_amd64.tar.gz
The origin file size is : 985,384
The unzip file size is : 965,416
I have tested Tar, he works fine