Can decompress raw files to sparse file
This commit is contained in:
		@@ -129,3 +129,9 @@ pub const COPY_PROGRAM: &str = "/bin/cp";
 | 
			
		||||
 | 
			
		||||
/// Gzip program path
 | 
			
		||||
pub const GZIP_PROGRAM: &str = "/usr/bin/gzip";
 | 
			
		||||
 | 
			
		||||
/// Bash program
 | 
			
		||||
pub const BASH_PROGRAM: &str = "/usr/bin/bash";
 | 
			
		||||
 | 
			
		||||
/// DD program
 | 
			
		||||
pub const DD_PROGRAM: &str = "/usr/bin/dd";
 | 
			
		||||
 
 | 
			
		||||
@@ -251,6 +251,20 @@ impl DiskFileInfo {
 | 
			
		||||
                cmd
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Decompress Raw to sparse file
 | 
			
		||||
            // https://benou.fr/www/ben/decompressing-sparse-files.html
 | 
			
		||||
            (DiskFileFormat::CompressedRaw, DiskFileFormat::Raw { is_sparse: true }) => {
 | 
			
		||||
                let mut cmd = Command::new(constants::BASH_PROGRAM);
 | 
			
		||||
                cmd.arg("-c").arg(format!(
 | 
			
		||||
                    "{} -d -c {} | {} conv=sparse of={}",
 | 
			
		||||
                    constants::GZIP_PROGRAM,
 | 
			
		||||
                    self.file_path.display(),
 | 
			
		||||
                    constants::DD_PROGRAM,
 | 
			
		||||
                    temp_file.display()
 | 
			
		||||
                ));
 | 
			
		||||
                cmd
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Dumb copy of file
 | 
			
		||||
            (a, b) if a == b => {
 | 
			
		||||
                let mut cmd = Command::new(constants::COPY_PROGRAM);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user