TRAMP offers also transparent access to files inside file archives. This is possible only on hosts which have installed GVFS (the GNOME Virtual File System), GVFS-based external methods. Internally, file archives are mounted via the GVFS archive method.
A file archive is a regular file of kind /path/to/dir/file.EXT. The extension ‘.EXT’ identifies the type of the file archive. To examine the contents of an archive with Dired, open file name as if it were a directory (i.e., open /path/to/dir/file.EXT/). A file inside a file archive, called archive file name, has the name /path/to/dir/file.EXT/dir/file.
Most of the (elisp)magic file name operations, are implemented for archive file names, exceptions are all operations which write into a file archive, and process related operations. Therefore, functions like
(copy-file "/path/to/dir/file.tar/dir/file" "/somewhere/else")
work out of the box. This is also true for file name completion, and
for libraries like
ediff, which accept archive
file names as well.
File archives are identified by the file name extension ‘.EXT’.
Since GVFS uses internally the library
all suffixes, which are accepted by this library, work also for
archive file names. Accepted suffixes are listed in the constant
tramp-archive-suffixes. They are
File archives could also be compressed, identified by an additional
compression suffix. Valid compression suffixes are listed in the
tramp-archive-compression-suffixes. They are
‘.bz2’, ‘.gz’, ‘.lrz’, ‘.lz’, ‘.lz4’,
‘.lzma’, ‘.lzo’, ‘.uu’, ‘.xz’, ‘.Z’, and
‘.zst’. A valid archive file name would be
/path/to/dir/file.tar.gz/dir/file. Even several suffixes in a
row are possible, like /path/to/dir/file.tar.gz.uu/dir/file.
An archive file name could be a remote file name, as in
Since all file operations are mapped internally to GVFS
operations, remote file names supported by
better, because no local copy of the file archive must be downloaded
first. For example, ‘/sftp:user@host:...’ performs better than
the similar ‘/scp:user@host:...’. See the constant
tramp-archive-all-gvfs-methods for a complete list of
tramp-gvfs supported method names.
url-handler-mode is enabled, archives could be visited via
allows complex file operations like
(progn (url-handler-mode 1) (ediff-directories "https://ftp.gnu.org/gnu/tramp/tramp-2.4.4.tar.gz/tramp-2.4.4" "https://ftp.gnu.org/gnu/tramp/tramp-2.4.5.tar.gz/tramp-2.4.5" ""))
It is even possible to access file archives in file archives, as
(progn (url-handler-mode 1) (find-file "https://ftp.debian.org/debian/pool/main/c/coreutils/\ coreutils_8.28-1_amd64.deb/control.tar.gz/control"))
In order to disable file archives, you could add the following form to your init file:
(customize-set-variable 'tramp-archive-enabled nil)