def create(files, gzip: false)
compression = gzip ? ::Archive::COMPRESSION_GZIP : ::Archive::COMPRESSION_NONE
format = ::Archive::FORMAT_TAR_PAX_RESTRICTED
::Archive.write_open_filename(archive, compression, format) do |tar|
files.each do |fn|
tar.new_entry do |entry|
content = nil
entry.pathname = fn
stat = File.lstat(fn)
if File.file?(fn)
content = File.read(fn)
entry.size = content.bytesize
end
entry.mode = stat.mode
entry.filetype = resolve_type(stat.ftype)
entry.atime = stat.atime
entry.mtime = stat.mtime
entry.symlink = File.readlink(fn) if File.symlink?(fn)
tar.write_header(entry)
tar.write_data(content) unless content.nil?
end
end
end
end