On Thu, Jun 09, 2022 at 11:53:20AM -0400, Matt Barry wrote: > On Wed, 2022-06-08 at 11:59 +0200, Marc Haber wrote: > > On Wed, Jun 08, 2022 at 12:34:14AM -0400, Matt Barry wrote: > > > tags -1 + confirmed patch > > > thanks > > > > How about zstd and the other hip compressors? > > Heh. I was thinking about whether to bother with this one. A couple > of factors: > > * adding zstd in the same fashion will take ~ 2 minutes > * there are, imo, no additional algorithms worth considering, so it > isn't a bottomless well of feature requests > * I guess the ideal for users would be a config item that controls the > order of selection: > > BACKUP_COMPRESS=xz gz zstd # eg. would never try bzip2 > > I can't imagine it getting more complicated than that..
Currently, the code looks like we are choosing the filename and the method of compression: if bzip2 exists, we use that. Otherwise, if gzip exists, we use that. Thankfully, we never documented this precedence, our docs just say that the backup file is called username.tar(.gz|.bz2). Christoph suggested using tar's --auto-compress option which automatically chooses the compress program depeding on the target file's suffix. How about doing the following: - we introduce a new option --backup-suffix, accepting things like ".bz2" or "xz" - we use that to generate the target file name, adding a period if the input doesnt start with one - use tar --auto-compress to create the file Unfortunately, if tar doesnt recognize the suffix, it'll happily generate foo.tar.baz as a regular tar archive. Otoh, if a compressor is selected that is not installed, tar will give a 127 exit code. I'd recommend the following: - invoke tar --create --auto-compress --file /tmp/foo.tar.suffix --directory / usr/sbin/deluser - if exit code 127 (compressor known, but not installed): - print diagnostic - set suffix to ".gz" (gzip is essential and guaranteed to exist) - if exit code != 127 - invoke tar --create --file /tmp/foo.tar --directory / usr/sbin/deluser - check whether foo.tar and foo.tar.sufffix are identical (that happens when the tar file suffix does not match a known compressor) - if identical (unknown compressor given) - print diagnostic - set suffix to ".gz" If there is any better way to find out whether tar has actually printed a compressed file without creating more dependencies, please, use that. Greetings Marc -- ----------------------------------------------------------------------------- Marc Haber | "I don't trust Computers. They | Mailadresse im Header Leimen, Germany | lose things." Winona Ryder | Fon: *49 6224 1600402 Nordisch by Nature | How to make an American Quilt | Fax: *49 6224 1600421