Section: User Commands (1)
Updated: June 2019
sqfs2tar - turn a SquashFS image into a tar archive
Quickly and painlessly turn a SquashFS filesystem image into a tar archive
that can then be examined and processed by any tool that can work on tar
archives. The resulting archive is written to stdout.
- --compressor, -c <name>
By default the result is a raw, uncompressed tar ball. Using this option
it is possible to select a stream compression format (such as gzip,
xz, zstd or bzip2) to use for the output archive.
Run sqfs2tar --help to get a list of all available compressors.
- --root-becomes, -r <dir>
Prefix all paths in the tarball with the given directory name and add an
entry for this directory that receives all meta data (permissions, ownership,
extended attributes, et cetera) of the root inode.
The special value . can be used since many tar archivers themselves pack
the attributes of the root directory that way and naturally support this.
If this option is not used, all meta data from the root inode IS LOST!
- --subdir, -d <dir>
Unpack the given sub directory instead of the filesystem root. Can be specified
more than once to select multiple directories. If only one is specified, it
becomes the new root of the archive filesystem tree.
- --keep-as-dir, -k
If --subdir is used only once, don't make the subdir the archive root,
instead keep it as prefix for all unpacked files. Using --subdir more
than once implies --keep-as-dir.
- --no-xattr, -X
Discard extended attributes from the SquashFS image. The default behavior is
to copy all xattrs attached to SquashFS inodes into the resulting tar archive.
- --no-hard-links, -L
Normally, sqfs2tar runs hard link detection and generates hard links for
entries that refer to the same inode. If this flag is set, hard link
detection is not performed and duplicate data records are generated
- --no-skip, -s
Abort if a file cannot be stored in a tar archive. For instance, the tar format
does not support socket files, but SquashFS does. The default behaviour of
sqfs2tar is to emit a warning to stderr and skip the entry. If this flag
is set, processing is aborted and sqfs2tar exits with an error status.
- --help, -h
Print help text and exit.
- --version, -V
Print version information and exit.
The output format is pre-POSIX ustar using GNU extensions where necessary.
Experimentation determined that this is most widely supported by activeley
used tar implementations (besides GNU tar), even more than the newer POSIX
format with PAX extensions.
If any file or directory is encountered that cannot be converted, it is
skipped and a warning is written to stderr. Unless the --no-skip
option is set, which aborts processing if a file cannot be converted.
This mainly affects socket files which are supported by SquashFS but not by
POSIX tar, GNU tar or PAX.
Since the tar format contains a sequence of files with absolute names, it has
no direct concept of a tree or an unnamed root node. Consequently, meta data
from the SquashFS root inode is lost, unless the --root-becomes option
The output archive can optionally be compressed. Default settings are used for
the supported compressors and there is currently no intention to expose finer
grained control over them. To set custom compressor flags, create an
uncompressed archive and pipe it into a dedicated compressor process.
Turn a SquashFS image into a tar archive:
sqfs2tar rootfs.sqfs > rootfs.tar
- Creating a compressed archive with gzip headers:
sqfs2tar --compressor gzip rootfs.sqfs > rootfs.tar.gz
- Compressing the output archive, but using custom compressor flags:
sqfs2tar rootfs.sqfs | xz -9e > rootfs.tar.xz
Written by David Oberhollenzer.
Copyright © 2019 David Oberhollenzer
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.