Add option for archive and restore VMs
This commit is contained in:
parent
8bbf7d31a5
commit
2840b6e221
3 changed files with 146 additions and 17 deletions
37
lib/vm/archive.rb
Normal file
37
lib/vm/archive.rb
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
require "fileutils"
|
||||
|
||||
module Archive
|
||||
def self.cmd(*cmd)
|
||||
puts "cmd: #{cmd.join(" ")}"
|
||||
# return
|
||||
stdout, stderr, status = Open3.capture3(*cmd)
|
||||
unless status.success?
|
||||
warn "Command failed: #{cmd.join(' ')}"
|
||||
warn stderr
|
||||
exit status.exitstatus || 1
|
||||
end
|
||||
stdout
|
||||
end
|
||||
|
||||
# it preserved sparsiveness
|
||||
# gtar -S --sparse-version=2 -I 'zstd -T0 -19' -cpf test.tar.zst /Volumes/Projs/VM/VM-data/image/debian-arm64/debian/
|
||||
# tar --zstd -xpf test.tar.zst -C ./r
|
||||
|
||||
def self.create(path, **options)
|
||||
out = options[:out] || File.join(Dir.pwd, "archive.tar.zst")
|
||||
|
||||
FileUtils.mkdir_p(File.dirname(out))
|
||||
cmd "gtar", "-S", "--sparse-version=2", "-I",
|
||||
"zstd -T0 -19", "-cpf", out, "-C" , path, "."
|
||||
end
|
||||
|
||||
def self.restore(file, path, **options)
|
||||
puts file
|
||||
puts path
|
||||
puts options
|
||||
|
||||
FileUtils.mkdir_p(path)
|
||||
cmd "gtar", "-S", "--sparse-version=2", "-I", "zstd", "-xpf",
|
||||
file, "-C", path
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue