Rust-高级-Crate之tar

  1. 解压tar包
  2. 压缩tar包

解压tar包

使用flate2tar一同处理

use std::fs::File;
use flate2::read::GzDecoder;
use tar::Archive;

fn main() -> Result<(), std::io::Error> {
let path = "archive.tar.gz";

let tar_gz = File::open(path)?;
let tar = GzDecoder::new(tar_gz);
let mut archive = Archive::new(tar);
archive.unpack(".")?;

Ok(())
}

压缩tar包

注意这里如果使用append_path无法正常运行。因此这里也可以不需要配置GzEncoder

use std::fs::File;
use flate2::Compression;
use flate2::write::GzEncoder;

fn main() -> Result<(), std::io::Error> {
let tar_gz = File::create("archive.tar.gz")?;
let enc = GzEncoder::new(tar_gz, Compression::default());
let mut tar = tar::Builder::new(enc);
tar.append_dir_all("", "src/.")?;
Ok(())
}

代码中的append_dir_all是将src中所有的数据放入到前面指定的文件夹下打包。