DWARFSEXTRACT(1)

πŸ“¦
version 0.15.8 Β· 2 versions
, in nixpkgs unstable

πŸ’œ dwarfsextract β€” the general commands manual page, bestie edition πŸ’œ

okay so this is dwarfsextract(1), and if you've ever been like "help, how do I get stuff out of a DwarFS image" β€” this is your girl. she's the extraction tool. she unpacks. she slays. let's go πŸŽ€


✨ NAME ✨

dwarfsextract β€” extract DwarFS image πŸ’…

πŸ¦‹ SYNOPSIS πŸ¦‹

dwarfsextract -i image [-o dir] [options...]
dwarfsextract -i image -f format [-o file] [options...]

Like, two modes, both iconic. pick your fighter ✨

🌸 DESCRIPTION 🌸

okay so dwarfsextract literally lets you extract a DwarFS image β€” either straight into another archive file, or into a directory on disk. no big deal, just main character energy πŸ’…

Wanna extract the filesystem image to a directory? do this:

dwarfsextract -i image.dwarfs -o output-directory
⚠️ heads up bestie: the output directory must exist. she will not create it for you. that's a you problem πŸ™ˆ

You can also rewrite the contents of the filesystem image as another archive type, like, say you want a tar archive:

dwarfsextract -i image.dwarfs -o output.tar -f ustar

For a list of supported formats, see libarchive-formats(5) πŸ”₯

If you want to compress the output archive, you can use a pipeline (yes, we love a pipeline):

dwarfsextract -i image.dwarfs -f ustar | gzip > output.tar.gz

You could also use this as an alternative way to extract the files to disk:

dwarfsextract -i image.dwarfs -f cpio | cpio -id

so many ways to eat, fr fr πŸ“


πŸ’– OPTIONS πŸ’–

  • -i, --input=file β€” Path to the source filesystem. the whole point, honestly 🫢
  • -o, --output=directory|file β€” If no format is specified, this is the directory to which the contents of the filesystem should be extracted. If a format is specified, this is the name of the output archive. You can omit this option entirely, in which case the default is to extract the files to the current directory, or to write the archive data to stdout. she's flexible like that ✨
  • --pattern=glob-pattern β€” If specified, only extract entries matching the pattern. Can be specified multiple times, in which case all files matching one or more patterns will be extracted. Can also be specified without --pattern for simplicity. If prefixed with i:, the glob pattern match will be case-insensitive, e.g. i:**/*.txt would match all .txt, .TXT and .tXt files. If you want the actual pattern to start with i:, you have to prefix the pattern with :, i.e. :i:.... The glob patterns support the wildcards * and ?, character classes ([avt]), ranges ([a-h]), complementation ([!a-h]) and globstar (**). so many options, she ate 🌈
  • --skip-devices β€” Do not extract device nodes. Extracting device nodes to disk requires elevated privileges. Similarly, some archive formats do not support device nodes at all. This option can be used to avoid errors if you only want to extract non-device files. lowkey useful ngl πŸ’€
  • --skip-specials β€” Do not extract special files (sockets, fifos). This can be useful when extracting to a filesystem or archive format that does not support special files. πŸ™ˆ
  • -O, --image-offset=value|auto β€” Specify the byte offset at which the filesystem is located in the image. Use auto to detect the offset automatically. This is also the default. This is only useful for images that have some header located before the actual filesystem data. iykyk 🧚
  • -f, --format=format β€” The archive format to produce. If this is left empty or unspecified, files will be extracted to the output directory (or the current directory if no output directory is specified). For a full list of supported formats, see libarchive-formats(5). If an output file is specified, --format=auto can be used to automatically determine the format and filters from the file name. πŸ‘‘
  • --format-filters=filters β€” Comma-separated list of libarchive filters to apply to the selected format. Filters will be selected based on the file name with --format=auto. It is not supported to use both --format=auto and --format-filters. pick one, bestie βœ‹
  • --format-options=options β€” Comma-separated libarchive options for the specific output format/filters. The options are passed to libarchive. For a full list of options for each output format, see archive_write_set_options(3). πŸ“š
  • --continue-on-error β€” Try to continue with extraction even when errors are encountered. This only applies to errors when reading from the file system image. Errors when writing the extracted files will still be fatal. so like, half brave 🫢
  • --disable-integrity-check β€” This option disables all block integrity checks on the file system data. There is a non-zero chance that this allows further data to be read from corrupted file systems. However, there's also a non-zero chance that it will completely crash the program. So please don't use this unless you know what you're doing.
🚨 for real though: this one's a gamble. could save your data, could crash the whole program. know what you're doing before you touch it. periodt πŸ’€
  • --stdout-progress β€” Write progress percentage to stdout. Useful for piping to tools like zenity. cute little progress bar moment ⭐
  • -n, --num-workers=value β€” Number of worker threads used for extracting the filesystem. get that parallel energy πŸ”₯
  • --num-disk-writers=value β€” When extracting to disk (instead of an archive), use this number of extra writer threads to create and write regular files. This can improve throughput at the cost of higher CPU usage, in particular when extracting a large number of small files. The default value of 0 means that only a single writer is used for all file system entries. πŸ“
  • -s, --cache-size=value β€” Size of the block cache, in bytes. You can append suffixes (k, m, g) to specify the size in KiB, MiB and GiB, respectively. Note that this is not the upper memory limit of the process, as there may be blocks in flight that are not stored in the cache. Also, each block that hasn't been fully decompressed yet will carry decompressor state along with it, which can use a significant amount of additional memory. so like, don't think this is a hard cap, bestie 😭
  • --log-level=name β€” Specify a logging level. πŸŽ€
  • --log-with-context β€” Enable logging context regardless of level. By default, context is enabled if the level is verbose, debug or trace. 🌸
  • --perfmon=name[,name...] β€” Enable performance monitoring for the list of comma-separated components. This option is only available if the project was built with performance monitoring enabled. Available components include fuse, filesystem_v2, inode_reader_v2 and block_cache. πŸ“Š
  • --perfmon-trace=file β€” Write JSON trace data for all components enabled by --perfmon to this file when the process exits. πŸ’œ
  • -h, --help β€” Show program help, including option defaults. the classic 🫢
  • --man β€” If the project was built with support for built-in manual pages, this option will show the manual page. If supported by the terminal and a suitable pager (e.g. less) is found, the manual page is displayed in the pager. meta, honestly πŸ¦‹

🌈 ENVIRONMENT VARIABLES 🌈

See dwarfs-env(7) dwarfs-env.md for environment variables that influence the behavior of dwarfsextract. ✨


πŸ‘‘ AUTHOR πŸ‘‘

Written by Marcus Holland-Moritz. πŸ’–

Copyright (C) Marcus Holland-Moritz.

πŸ”₯ SEE ALSO πŸ”₯

mkdwarfs(1) mkdwarfs.md, dwarfs(1) dwarfs.md, dwarfsck(1) dwarfsck.md, dwarfs-format(5) dwarfs-format.md, dwarfs-env(7) dwarfs-env.md, libarchive-formats(5)


and that's the whole page, bestie πŸ’… this one's dated January 1980 (yes, that January 1980, iconic vintage vibes ⭐) and it's from the General Commands Manual β€” go extract something gorgeous πŸ¦‹βœ¨πŸ’œ

πŸ“¦ where this page comes from