snap

package: snapd

title: snap(8)

summary: Tool to interact with snaps

text:
# snap(8)

## NAME
snap - Tool to interact with snaps

## SYNOPSIS
snap [OPTIONS]

## DESCRIPTION
The snap command lets you install, configure, refresh and remove snaps. Snaps are packages that work across many different Linux distributions, enabling secure delivery and operation of the latest apps and utilities.

## COMMANDS

### abort
Abort a pending change

The abort command attempts to abort a change that still has pending tasks.

Usage: snap [OPTIONS] abort [abort-OPTIONS]

--last

Select last change of given type (install, refresh, remove, try, auto-refresh, etc.). A question mark at the end of the type means to do nothing (instead of returning an error) if no change of the given type is found. Note the question mark could need protecting from the shell.

### ack
Add an assertion to the system

The ack command tries to add an assertion to the system assertion database.

The assertion may also be a newer revision of a pre-existing assertion that it will replace.

To succeed the assertion must be valid, its signature verified with a known public key and the assertion consistent with and its prerequisite in the database.

### alias
Set up a manual alias

The alias command aliases the given snap application to the given alias.

Once this manual alias is setup the respective application command can be invoked just using the alias.

Usage: snap [OPTIONS] alias [alias-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

### aliases
List aliases in the system

The aliases command lists all aliases available in the system and their status.

$ snap aliases <snap>

Lists only the aliases defined by the specified snap.

### changes
List system changes

The changes command displays a summary of system changes performed recently.

Usage: snap [OPTIONS] changes [changes-OPTIONS]

--abs-time

Display absolute times (in RFC 3339 format). Otherwise, display relative times up to 60 days, then YYYY-MM-DD.

### check-snapshot
Check a snapshot

The check-snapshot command verifies the user, system and configuration data of the snaps included in the specified snapshot.

The check operation runs the same data integrity verification that is performed when a snapshot is restored.

By default, this command checks all the data in a snapshot. Alternatively, you can specify the data of which snaps to check, or for which users, or a combination of these.

If a snap is included in a check-snapshot operation, excluding its system and configuration data from the check is not currently possible. This restriction may be lifted in the future.

Usage: snap [OPTIONS] check-snapshot [check-snapshot-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

--users

Check data of only specific users (comma-separated) (default: all users)

### connect
Connect a plug to a slot

The connect command connects a plug to a slot. It may be called in the following ways:

$ snap connect <snap>:<plug> <snap>:<slot>

Connects the provided plug to the given slot.

$ snap connect <snap>:<plug> <snap>

Connects the specific plug to the only slot in the provided snap that matches the connected interface. If more than one potential slot exists, the command fails.

$ snap connect <snap>:<plug>

Connects the provided plug to the slot in the core snap with a name matching the plug name.

Usage: snap [OPTIONS] connect [connect-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

### connections
List interface connections

The connections command lists connections between plugs and slots in the system.

Unless <snap> is provided, the listing is for connected plugs and slots for all snaps in the system. In this mode, pass --all to also list unconnected plugs and slots.

$ snap connections <snap>

Lists connected and unconnected plugs and slots for the specified snap.

Usage: snap [OPTIONS] connections [connections-OPTIONS]

--all

Show connected and unconnected plugs and slots

### create-cohort
Create cohort keys for a set of snaps

The create-cohort command creates a set of cohort keys for a given set of snaps.

A cohort is a view or snapshot of a snap's "channel map" at a given point in time that fixes the set of revisions for the snap given other constraints (e.g. channel or architecture). The cohort is then identified by an opaque per-snap key that works across systems. Installations or refreshes of the snap using a given cohort key would use a fixed revision for up to 90 days, after which a new set of revisions would be fixed under that same cohort key and a new 90 days window started.

### debug
Run debug commands

The debug command contains a selection of additional sub-commands.

Debug commands can be removed without notice and may not work on non-development systems.

### debug api
Execute raw query to snapd API

Execute a raw query to snapd API. Complex input can be read from stdin, while output is printed to stdout. See examples below:

List all snaps: $ snap debug api /v2/snaps

Find snaps with name foo: $ snap debug api '/v2/find?name=foo'

Request refresh of snap 'some-snap': $ echo '{"action": "refresh"}' | snap debug api -X POST \

-H 'Content-Type: application/json' /v2/snaps/some-snap

Usage: snap [OPTIONS] debug api [api-OPTIONS]

-H, --header

Set header (can be repeated multiple times), header kind and value are separated with ': '

-X, --request

HTTP method to use (defaults to GET)

--fail

Fail on request errors

### debug confinement
Print the confinement mode the system operates in

The confinement command will print the confinement mode (strict, partial or none) the system operates in.

### debug connectivity
Check network connectivity status

The connectivity command checks the network connectivity of snapd.

### debug execution
Obtain information about execution aspects of snap toolchain commands

Display debugging information about aspects of snap toolchain execution, such as reexecution, tools location etc.

### debug execution apparmor
Show apparmor

### debug execution internal-tool
Show internal tool execution info

### debug execution snap
Show snap execution info

### debug migrate-home
Migrate snaps' directory to ~/Snap.

Migrate snaps' directory to ~/Snap.

Usage: snap [OPTIONS] debug migrate-home [migrate-home-OPTIONS]

--no-wait

### debug paths
Print system paths

The paths command prints the list of paths detected and used by snapd.

### debug sandbox-features
Print sandbox features available on the system

The sandbox command prints tags describing features of individual sandbox components used by snapd on a given system.

Usage: snap [OPTIONS] debug sandbox-features [sandbox-features-OPTIONS]

--required

Ensure that given backend:feature is available

### debug stacktraces
Obtain stacktraces of all snapd goroutines

Obtain stacktraces of all snapd goroutines.

### debug state
Inspect a snapd state file.

Inspect a snapd state file, bypassing snapd API.

Usage: snap [OPTIONS] debug state [state-OPTIONS]

--abs-time

Display absolute times (in RFC 3339 format). Otherwise, display relative times up to 60 days, then YYYY-MM-DD.

--changes

List all changes

--task

ID of the task to inspect

--change

ID of the change to inspect

--check

Check change consistency

--connections

List all connections

--connection

Show details of the matching connections (snap or snap:plug,snap:slot or snap:plug-or-slot

--is-seeded

Output seeding status (true or false)

--dot

Dot (graphviz) output

--no-hold

Omit tasks in 'Hold' state in the change output

### debug timings
Get the timings of the tasks of a change

The timings command displays details about the time each task runs.

Usage: snap [OPTIONS] debug timings [timings-OPTIONS]

--last

Select last change of given type (install, refresh, remove, try, auto-refresh, etc.). A question mark at the end of the type means to do nothing (instead of returning an error) if no change of the given type is found. Note the question mark could need protecting from the shell.

--ensure

Show timings for a change related to the given Ensure activity (one of: auto-refresh, become-operational, refresh-catalogs, refresh-hints, seed)

--all

Show timings for all executions of the given Ensure or startup activity, not just the latest

--startup

Show timings for the startup of given subsystem (one of: load-state, ifacemgr)

--verbose

Show more information

### disable
Disable a snap in the system

The disable command disables a snap. The binaries and services of the snap will no longer be available, but all the data is still available and the snap can easily be enabled again.

Usage: snap [OPTIONS] disable [disable-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

### disconnect
Disconnect a plug from a slot

The disconnect command disconnects a plug from a slot. It may be called in the following ways:

$ snap disconnect <snap>:<plug> <snap>:<slot>

Disconnects the specific plug from the specific slot.

$ snap disconnect <snap>:<slot or plug>

Disconnects everything from the provided plug or slot. The snap name may be omitted for the core snap.

When an automatic connection is manually disconnected, its disconnected state is retained after a snap refresh. The --forget flag can be added to the disconnect command to reset this behaviour, and consequently re-enable an automatic reconnection after a snap refresh.

Usage: snap [OPTIONS] disconnect [disconnect-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

--forget

Forget remembered state about the given connection.

### download
Download the given snap

The download command downloads the given snap and its supporting assertions to the current directory with .snap and .assert file extensions, respectively.

Usage: snap [OPTIONS] download [download-OPTIONS]

--channel

Use this channel instead of stable

--edge

Install from the edge channel

--beta

Install from the beta channel

--candidate

Install from the candidate channel

--stable

Install from the stable channel

--revision

Download the given revision of a snap

--basename

Use this basename for the snap and assertion files (defaults to <snap>_<revision>)

--target-directory

Download to this directory (defaults to the current directory)

--cohort

Download from the given cohort

### enable
Enable a snap in the system

The enable command enables a snap that was previously disabled.

Usage: snap [OPTIONS] enable [enable-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

### export-snapshot
Export a snapshot

Export a snapshot to the given filename.

### find
Find packages to install

The find command queries the store for available packages.

With the --private flag, which requires the user to be logged-in to the store (see 'snap help login'), it instead searches for private snaps that the user has developer access to, either directly or through the store's collaboration feature.

A green check mark (given color and unicode support) after a publisher name indicates that the publisher has been verified.

Usage: snap [OPTIONS] find [find-OPTIONS]

Aliases: search

--private

Search private snaps.

--narrow

Only search for snaps in “stable”.

--section [="show-all-sections-please"] <default: "no-section-specified">

Restrict the search to a given section.

--color <default: "auto">

Use a little bit of color to highlight some things.

--unicode <default: "auto">

Use a little bit of Unicode to improve legibility.

### forget
Delete a snapshot

The forget command deletes a snapshot. This operation can not be undone.

A snapshot contains archives for the user, system and configuration data of each snap included in the snapshot.

By default, this command forgets all the data in a snapshot. Alternatively, you can specify the data of which snaps to forget.

Usage: snap [OPTIONS] forget [forget-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

### get
Print configuration options

The get command prints configuration options for the provided snap.

$ snap get snap-name username

frank

If multiple option names are provided, the corresponding values are returned:

$ snap get snap-name username password

Key Value

username frank

password ...

Nested values may be retrieved via a dotted path:

$ snap get snap-name author.name

frank

Usage: snap [OPTIONS] get [get-OPTIONS]

-t

Strict typing with nulls and quoted strings

-d

Always return document, even with single key

-l

Always return list, even with single key

### help
Show help about a command

The help command displays information about snap commands.

Usage: snap [OPTIONS] help [help-OPTIONS]

--all

Show a short summary of all commands

### import-snapshot
Import a snapshot

Import an exported snapshot set to the system. The snapshot is imported with a new snapshot ID and can be restored using the restore command.

Usage: snap [OPTIONS] import-snapshot [import-snapshot-OPTIONS]

--abs-time

### info
Show detailed information about snaps

The info command shows detailed information about snaps.

The snaps can be specified by name or by path; names are looked for both in the store and in the installed snaps; paths can refer to a .snap file, or to a directory that contains an unpacked snap suitable for 'snap try' (an example of this would be the 'prime' directory snapcraft produces).

Usage: snap [OPTIONS] info [info-OPTIONS]

--color <default: "auto">

Use a little bit of color to highlight some things.

--unicode <default: "auto">

Use a little bit of Unicode to improve legibility.

--abs-time

Display absolute times (in RFC 3339 format). Otherwise, display relative times up to 60 days, then YYYY-MM-DD.

--verbose

Include more details on the snap (expanded notes, base, etc.)

### install
Install snaps on the system

The install command installs the named snaps on the system.

To install multiple instances of the same snap, append an underscore and a unique identifier (for each instance) to a snap's name.

Parallel instances are installed with --unaliased passed implicitly to avoid conflicts with existing installs. This behaviour can be altered by passing --prefer which will enable all aliases of the given snap in preference to conflicting aliases of other snaps whose automatic aliases will be disabled and manual aliases will be removed.

With no further options, the snaps are installed tracking the stable channel, with strict security confinement. All available channels of a snap are listed in its 'snap info' output.

When --revision is used, a later refresh will typically undo the revision override, taking the snap back to the current revision of the channel it's tracking.

Use --name to set the instance name when installing from snap file.

Usage: snap [OPTIONS] install [install-OPTIONS]

--color <default: "auto">

Use a little bit of color to highlight some things.

--unicode <default: "auto">

Use a little bit of Unicode to improve legibility.

--no-wait

Do not wait for the operation to finish but just print the change id.

--channel

Use this channel instead of stable

--edge

Install from the edge channel

--beta

Install from the beta channel

--candidate

Install from the candidate channel

--stable

Install from the stable channel

--devmode

Put snap in development mode and disable security confinement

--jailmode

Put snap in enforced confinement mode

--classic

Put snap in classic mode and disable security confinement

--revision

Install the given revision of a snap

--dangerous

Install the given snap file even if there are no pre-acknowledged signatures for it, meaning it was not verified and could be dangerous (--devmode implies this)

--unaliased

Install the given snap without enabling its automatic aliases

--prefer

Enable all aliases of the given snap in preference to conflicting aliases of other snaps

--name

Install the snap file under the given instance name

--cohort

Install the snap in the given cohort

--ignore-validation

Ignore validation by other snaps blocking the installation

--transaction <default: "per-snap">

Have one transaction per-snap or one for all the specified snaps

--quota-group

Add the snap to a quota group on install

### interface
Show details of snap interfaces

The interface command shows details of snap interfaces.

If no interface name is provided, a list of interface names with at least one connection is shown, or a list of all interfaces if --all is provided.

Usage: snap [OPTIONS] interface [interface-OPTIONS]

--attrs

Show interface attributes

--all

Include unused interfaces

### known
Show known assertions of the provided type

The known command shows known assertions of the provided type. If header=value pairs are provided after the assertion type, the assertions shown must also have the specified headers matching the provided values.

Usage: snap [OPTIONS] known [known-OPTIONS]

--remote

Query the store for the assertion, via snapd if possible

--direct

Query the store for the assertion, without attempting to go via snapd

### list
List installed snaps

The list command displays a summary of snaps installed in the current system.

A green check mark (given color and unicode support) after a publisher name indicates that the publisher has been verified.

Usage: snap [OPTIONS] list [list-OPTIONS]

--all

Show all revisions

--color <default: "auto">

Use a little bit of color to highlight some things.

--unicode <default: "auto">

Use a little bit of Unicode to improve legibility.

### login
Authenticate to snapd and the store

The login command authenticates the user to snapd and the snap store, and saves credentials into the ~/.snap/auth.json file. Further communication with snapd will then be made using those credentials.

It's not necessary to log in to interact with snapd. Doing so, however, enables interactions without sudo, as well as some some developer-oriented features as detailed in the help for the find, install and refresh commands.

An account can be set up at https://login.ubuntu.com

### logout
Log out of snapd and the store

The logout command logs the current user out of snapd and the store.

### logs
Retrieve logs for services

The logs command fetches logs of the given services and displays them in chronological order.

Usage: snap [OPTIONS] logs [logs-OPTIONS]

--abs-time

Display absolute times (in RFC 3339 format). Otherwise, display relative times up to 60 days, then YYYY-MM-DD.

-n <default: "10">

Show only the given number of lines, or 'all'.

-f

Wait for new lines and print them as they come in.

### model
Get the active model for this device

The model command returns the active model assertion information for this device.

By default, only the essential model identification information is included in the output, but this can be expanded to include all of an assertion's non-meta headers.

The verbose output is presented in a structured, yaml-like format.

Similarly, the active serial assertion can be used for the output instead of the model assertion.

Usage: snap [OPTIONS] model [model-OPTIONS]

--abs-time

Display absolute times (in RFC 3339 format). Otherwise, display relative times up to 60 days, then YYYY-MM-DD.

--color <default: "auto">

Use a little bit of color to highlight some things.

--unicode <default: "auto">

Use a little bit of Unicode to improve legibility.

--serial

Print the serial assertion instead of the model assertion.

--verbose

Print all specific assertion fields.

--assertion

Print the raw assertion.

### okay
Acknowledge warnings

The okay command acknowledges the warnings listed with 'snap warnings'.

Once acknowledged a warning won't appear again unless it re-occurrs and sufficient time has passed.

### pack
Pack the given directory as a snap

The pack command packs the given snap-dir as a snap and writes the result to target-dir. If target-dir is omitted, the result is written to current directory. If both source-dir and target-dir are omitted, the pack command packs the current directory.

The default file name for a snap can be derived entirely from its snap.yaml, but in some situations it's simpler for a script to feed the filename in. In those cases, --filename can be given to override the default. If this filename is not absolute it will be taken as relative to target-dir.

When used with --check-skeleton, pack only checks whether snap-dir contains valid snap metadata and raises an error otherwise. Application commands listed in snap metadata file, but appearing with incorrect permission bits result in an error. Commands that are missing from snap-dir are listed in diagnostic messages.

Usage: snap [OPTIONS] pack [pack-OPTIONS]

--check-skeleton

Validate snap-dir metadata only

--filename

Output to this filename

--compression

Compression to use (e.g. xz or lzo)

### prefer
Enable aliases from a snap, disabling any conflicting aliases

The prefer command enables all aliases of the given snap in preference to conflicting aliases of other snaps whose aliases will be disabled (or removed, for manual ones).

Usage: snap [OPTIONS] prefer [prefer-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

### prepare-image
Prepare a device image

The prepare-image command performs some of the steps necessary for creating device images.

For core images it is not invoked directly but usually via ubuntu-image.

For preparing classic images it supports a --classic mode

Usage: snap [OPTIONS] prepare-image [prepare-image-OPTIONS]

--classic

Enable classic mode to prepare a classic model image

--preseed

Preseed (UC20+ only)

--preseed-sign-key

Name of the key to use to sign preseed assertion, otherwise use the default key

--apparmor-features-dir

Optional path to apparmor kernel features directory (UC20+ only)

--sysfs-overlay

Optional sysfs overlay to be used when running preseeding steps

--arch

Specify an architecture for snaps for --classic when the model does not

--channel

The channel to use

--snap <snap>[=<channel>]

Include the given snap from the store or a local file and/or specify the channel to track for the given snap

--comp <snap>+<comp>

Include the given component from the store or a local file

--revisions

Specify a seeds.manifest file referencing the exact revisions of the provided snaps which should be installed

--write-revisions [="./seed.manifest"]

Writes a manifest file containing references to the exact snap revisions used for the image. A path for the manifest is optional.

### quota
Show quota group for a set of snaps

The quota command shows information about a quota group, including the set of snaps and any sub-groups it contains, as well as its resource constraints and the current usage of those constrained resources.

### quotas
Show quota groups

The quotas command shows all quota groups.

### reboot
Reboot into selected system and mode

The reboot command reboots the system into a particular mode of the selected recovery system.

When called without a system label and without a mode it will just trigger a regular reboot.

When called without a label, the current system will be used for "run" mode. The default recovery system will be used for "recover", "factory-reset" and "install" modes.

Note that the "run" mode is only available for the current system.

Usage: snap [OPTIONS] reboot [reboot-OPTIONS]

--run

Boot into run mode

--install

Boot into install mode

--recover

Boot into recover mode

--factory-reset

Boot into factory-reset mode

### recovery
List available recovery systems

The recovery command lists the available recovery systems.

With --show-keys it displays recovery keys that can be used to unlock the encrypted partitions if the device-specific automatic unlocking does not work.

Usage: snap [OPTIONS] recovery [recovery-OPTIONS]

--color <default: "auto">

Use a little bit of color to highlight some things.

--unicode <default: "auto">

Use a little bit of Unicode to improve legibility.

--show-keys

Show recovery keys (if available) to unlock encrypted partitions.

### refresh
Refresh snaps in the system

The refresh command updates the specified snaps, or all snaps in the system if none are specified.

With no further options, the snaps are refreshed to the current revision of the channel they're tracking, preserving their confinement options. All available channels of a snap are listed in its 'snap info' output.

When --revision is used, a later refresh will typically undo the revision override.

Hold (--hold) is used to postpone snap refresh updates for all snaps when no snaps are specified, or for the specified snaps.

When no snaps are specified --hold is only effective on auto-refreshes and will not block either general refresh requests from 'snap refresh' or specific snap requests from 'snap refresh target-snap'.

When snaps are specified --hold is effective on both their auto-refreshes and general refresh requests from 'snap refresh'. However, specific snap requests from 'snap refresh target-snap' remain unblocked and will proceed.

Usage: snap [OPTIONS] refresh [refresh-OPTIONS]

--color <default: "auto">

Use a little bit of color to highlight some things.

--unicode <default: "auto">

Use a little bit of Unicode to improve legibility.

--abs-time

Display absolute times (in RFC 3339 format). Otherwise, display relative times up to 60 days, then YYYY-MM-DD.

--no-wait

Do not wait for the operation to finish but just print the change id.

--channel

Use this channel instead of stable

--edge

Install from the edge channel

--beta

Install from the beta channel

--candidate

Install from the candidate channel

--stable

Install from the stable channel

--devmode

Put snap in development mode and disable security confinement

--jailmode

Put snap in enforced confinement mode

--classic

Put snap in classic mode and disable security confinement

--amend

Allow refresh attempt on snap unknown to the store

--revision

Refresh to the given revision

--cohort

Refresh the snap into the given cohort

--leave-cohort

Refresh the snap out of its cohort

--list

Show the new versions of snaps that would be updated with the next refresh

--time

Show auto refresh information but do not perform a refresh

--ignore-validation

Ignore validation by other snaps blocking the refresh

--transaction <default: "per-snap">

Have one transaction per-snap or one for all the specified snaps

--hold [="forever"]

Hold refreshes for a specified duration (or forever, if no value is specified)

--unhold

Remove refresh hold

### remodel
Remodel this device

The remodel command changes the model assertion of the device, either to a new revision or a full new model.

In the process it applies any implied changes to the device: new required snaps, new kernel or gadget etc.

Snaps and assertions are downloaded from the store unless they are provided as local files specified by --snap and --assertion options. If using these options, it is expected that all the needed snaps and assertions are provided locally, otherwise the remodel will fail.

Usage: snap [OPTIONS] remodel [remodel-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

--snap

Use one or more locally available snaps.

--assertion

Use one or more locally available assertion files.

--offline

Use only pre-installed and locally provided snaps and assertions. Providing any snaps or assertions locally implies --offline.

### remove
Remove snaps from the system

The remove command removes the named snap instance from the system.

By default all the snap revisions are removed, including their data and the common data directory. When a --revision option is passed only the specified revision is removed.

Unless automatic snapshots are disabled, a snapshot of all data for the snap is saved upon removal, which is then available for future restoration with snap restore. The --purge option disables automatically creating snapshots.

Usage: snap [OPTIONS] remove [remove-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

--revision

Remove only the given revision

--purge

Remove the snap without saving a snapshot of its data

--terminate

Terminate running processes associated with a snap before removal

### remove-quota
Remove quota group

The remove-quota command removes the given quota group.

Currently, only quota groups with no sub-groups can be removed. In order to remove a quota group with sub-groups, the sub-groups must first be removed until there are no sub-groups for the group, then the group itself can be removed.

Usage: snap [OPTIONS] remove-quota [remove-quota-OPTIONS]

--no-wait

### restart
Restart services

The restart command restarts the given services.

If the --reload option is given, for each service whose app has a reload command, a reload is performed instead of a restart.

Usage: snap [OPTIONS] restart [restart-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

--system

The operation should only affect system services.

--user

The operation should only affect user services for the current user.

--users

If provided and set to 'all', the operation should affect services for all users.

--reload

If the service has a reload command, use it instead of restarting.

### restore
Restore a snapshot

The restore command replaces the current user, system and configuration data of included snaps, with the corresponding data from the specified snapshot.

By default, this command restores all the data in a snapshot. Alternatively, you can specify the data of which snaps to restore, or for which users, or a combination of these.

If a snap is included in a restore operation, excluding its system and configuration data from the restore is not currently possible. This restriction may be lifted in the future.

Usage: snap [OPTIONS] restore [restore-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

--users

Restore data of only specific users (comma-separated) (default: all users)

### revert
Reverts the given snap to the previous state

The revert command reverts the given snap to its state before the latest refresh. This will reactivate the previous snap revision, and will use the original data that was associated with that revision, discarding any data changes that were done by the latest revision. As an exception, data which the snap explicitly chooses to share across revisions is not touched by the revert process.

Usage: snap [OPTIONS] revert [revert-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

--devmode

Put snap in development mode and disable security confinement

--jailmode

Put snap in enforced confinement mode

--classic

Put snap in classic mode and disable security confinement

--revision

Revert to the given revision

### run
Run the given snap command

The run command executes the given snap command with the right confinement and environment.

Usage: snap [OPTIONS] run [run-OPTIONS] <NAME-OF-SNAP>.<NAME-OF-APP> [<SNAP-APP-ARG>...]

--shell

Run a shell instead of the command (useful for debugging)

--debug-log

Enable debug logging during early snap startup phases

--strace [="with-strace"] <default: "no-strace">

Run the command under strace (useful for debugging). Extra strace options can be specified as well here. Pass --raw to strace early snap helpers.

--gdbserver [=":0"] <default: "no-gdbserver">

Run the command with gdbserver

--trace-exec

Display exec calls timing data

### save
Save a snapshot of the current data

The save command creates a snapshot of the current user, system and configuration data for the given snaps.

By default, this command saves the data of all snaps for all users. Alternatively, you can specify the data of which snaps to save, or for which users, or a combination of these.

If a snap is included in a save operation, excluding its system and configuration data from the snapshot is not currently possible. This restriction may be lifted in the future.

Usage: snap [OPTIONS] save [save-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

--abs-time

Display absolute times (in RFC 3339 format). Otherwise, display short relative times.

--users

Snapshot data of only specific users (comma-separated) (default: all users)

### saved
List currently stored snapshots

The saved command displays a list of snapshots that have been created previously with the 'save' command.

Usage: snap [OPTIONS] saved [saved-OPTIONS]

--abs-time

Display absolute times (in RFC 3339 format). Otherwise, display short relative times.

--id

Show only a specific snapshot.

### services
Query the status of services

The services command lists information about the services specified, or about the services in all currently installed snaps.

If executed as root user, the 'Startup' column of any user service will be whether it's globally enabled (i.e systemctl is-enabled). To view the actual 'Startup'|'Current' status of the user services for the root user itself, --user can be provided.

If executed as a non-root user, the 'Startup'|'Current' status of user services will be the current status for the invoking user. To view the global enablement status of user services, --global can be provided.

Usage: snap [OPTIONS] services [services-OPTIONS]

-g, --global

Show the global enable status for user services instead of the status for the current user.

-u, --user

Show the current status of the user services instead of the global enable status.

### set
Change configuration options

The set command changes the provided configuration options as requested.

$ snap set snap-name username=frank password=$PASSWORD

All configuration changes are persisted at once, and only after the snap's configuration hook returns successfully.

Nested values may be modified via a dotted path:

$ snap set snap-name author.name=frank

Configuration option may be unset with exclamation mark:

$ snap set snap-name author!

Usage: snap [OPTIONS] set [set-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

-t

Parse the value strictly as JSON document

-s

Parse the value as a string

### set-quota
Create or update a quota group.

The set-quota command updates or creates a quota group with the specified set of snaps.

A quota group sets resource limits on the set of snaps or snap services it contains. Snaps can be at most in one quota group but quota groups can be nested. Nested quota groups are subject to the restriction that the total sum of each existing quota in sub-groups cannot exceed that of the parent group the nested groups are part of.

All provided snaps are appended to the group; to remove a snap from a quota group, the entire group must be removed with remove-quota and recreated without the snap. To remove a sub-group from the quota group, the sub-group must be removed directly with the remove-quota command.

To set limits on individual services, one or more services can be placed into a sub-group. The respective snap for each service must belong to the sub-group's parent group. These sub-groups will have the same limitations as nested groups which means their combined resource usage cannot exceed the resource limits set for the parent group. Sub-groups which contain services cannot have their own journal quotas set, and instead automatically inherit any journal quota their parent quota group may have.

The memory limit for a quota group can be increased but not decreased. To decrease the memory limit for a quota group, the entire group must be removed with the remove-quota command and recreated with a lower limit. Increasing the memory limit for a quota group does not restart any services associated with snaps in the quota group.

The CPU limit for a quota group can be both increased and decreased after being set on a quota group. The CPU limit can be specified as a single percentage which means that the quota group is allowed an overall percentage of the CPU resources. Setting it to 50% means that the quota group is allowed to use up to 50% of all CPU cores in the allowed CPU set. Setting the percentage to 2x100% means that the quota group is allowed up to 100% on two cpu cores.

The CPU set limit for a quota group can be modified to include new cpus, or to remove existing cpus from the quota already set.

The threads limit for a quota group can be increased but not decreased. To decrease the threads limit for a quota group, the entire group must be removed with the remove-quota command and recreated with a lower limit.

The journal limits can be increased and decreased after being set on a group. Setting a journal limit will cause the snaps in the group to be put into the same journal namespace. This will affect the behaviour of the log command.

New quotas can be set on existing quota groups, but existing quotas cannot be removed from a quota group, without removing and recreating the entire group.

Adding new snaps to a quota group will result in all non-disabled services in that snap being restarted.

An existing sub group cannot be moved from one parent to another.

Usage: snap [OPTIONS] set-quota [set-quota-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

--memory [=]

Memory quota

--cpu [=]

CPU quota

--cpu-set [=]

CPU set quota

--threads [=]

Threads quota

--journal-size [=]

Journal size quota

--journal-rate-limit [=]

Journal rate limit as <message count>/<message period>

--parent [=]

Parent quota group

### start
Start services

The start command starts, and optionally enables, the given services.

Usage: snap [OPTIONS] start [start-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

--system

The operation should only affect system services.

--user

The operation should only affect user services for the current user.

--users

If provided and set to 'all', the operation should affect services for all users.

--enable

As well as starting the service now, arrange for it to be started on boot.

### stop
Stop services

The stop command stops, and optionally disables, the given services.

Usage: snap [OPTIONS] stop [stop-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

--system

The operation should only affect system services.

--user

The operation should only affect user services for the current user.

--users

If provided and set to 'all', the operation should affect services for all users.

--disable

As well as stopping the service now, arrange for it to no longer be started on boot.

### switch
Switches snap to a different channel

The switch command switches the given snap to a different channel without doing a refresh. All available channels of a snap are listed in its 'snap info' output.

Usage: snap [OPTIONS] switch [switch-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

--channel

Use this channel instead of stable

--edge

Install from the edge channel

--beta

Install from the beta channel

--candidate

Install from the candidate channel

--stable

Install from the stable channel

--cohort

Switch the snap into the given cohort

--leave-cohort

Switch the snap out of its cohort

### tasks
List a change's tasks

The tasks command displays a summary of tasks associated with an individual change.

Usage: snap [OPTIONS] tasks [tasks-OPTIONS]

Aliases: change

--abs-time

Display absolute times (in RFC 3339 format). Otherwise, display relative times up to 60 days, then YYYY-MM-DD.

--last

Select last change of given type (install, refresh, remove, try, auto-refresh, etc.). A question mark at the end of the type means to do nothing (instead of returning an error) if no change of the given type is found. Note the question mark could need protecting from the shell.

### try
Test an unpacked snap in the system

The try command installs an unpacked snap into the system for testing purposes. The unpacked snap content continues to be used even after installation, so non-metadata changes there go live instantly. Metadata changes such as those performed in snap.yaml will require reinstallation to go live.

If snap-dir argument is omitted, the try command will attempt to infer it if either snapcraft.yaml file and prime directory or meta/snap.yaml file can be found relative to current working directory.

Usage: snap [OPTIONS] try [try-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

--devmode

Put snap in development mode and disable security confinement

--jailmode

Put snap in enforced confinement mode

--classic

Put snap in classic mode and disable security confinement

### unalias
Remove a manual alias, or the aliases for an entire snap

The unalias command removes a single alias if the provided argument is a manual alias, or disables all aliases of a snap, including manual ones, if the argument is a snap name.

Usage: snap [OPTIONS] unalias [unalias-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

### unset
Remove configuration options

The unset command removes the provided configuration options as requested.

$ snap unset snap-name name address

All configuration changes are persisted at once, and only after the snap's configuration hook returns successfully.

Nested values may be removed via a dotted path:

$ snap unset snap-name user.name

Usage: snap [OPTIONS] unset [unset-OPTIONS]

--no-wait

Do not wait for the operation to finish but just print the change id.

### validate
List or apply validation sets

The validate command lists or applies validation sets that state which snaps are required or permitted to be installed together, optionally constrained to fixed revisions.

A validation set can either be in monitoring mode, in which case its constraints aren't enforced, or in enforcing mode, in which case snapd will not allow operations which would result in snaps breaking the validation set's constraints.

Usage: snap [OPTIONS] validate [validate-OPTIONS]

--monitor

Monitor the given validations set

--enforce

Enforce the given validation set

--forget

Forget the given validation set

--refresh

Refresh or install snaps to satisfy enforced validation sets

--color <default: "auto">

Use a little bit of color to highlight some things.

--unicode <default: "auto">

Use a little bit of Unicode to improve legibility.

--no-wait

Do not wait for the operation to finish but just print the change id.

### version
Show version details

The version command displays the versions of the running client, server, and operating system.

### wait
Wait for configuration

The wait command waits until a configuration becomes true.

### warnings
List warnings

The warnings command lists the warnings that have been reported to the system.

Once warnings have been listed with 'snap warnings', 'snap okay' may be used to silence them. A warning that's been silenced in this way will not be listed again unless it happens again, _and_ a cooldown time has passed.

Warnings expire automatically, and once expired they are forgotten.

Usage: snap [OPTIONS] warnings [warnings-OPTIONS]

--abs-time

Display absolute times (in RFC 3339 format). Otherwise, display relative times up to 60 days, then YYYY-MM-DD.

--unicode <default: "auto">

Use a little bit of Unicode to improve legibility.

--all

Show all warnings

--verbose

Show more information

### watch
Watch a change in progress

The watch command waits for the given change-id to finish and shows progress (if available).

Usage: snap [OPTIONS] watch [watch-OPTIONS]

--last

Select last change of given type (install, refresh, remove, try, auto-refresh, etc.). A question mark at the end of the type means to do nothing (instead of returning an error) if no change of the given type is found. Note the question mark could need protecting from the shell.

### whoami
Show the email the user is logged in with

The whoami command shows the email the user is logged in with.

## NOTES
1.

Online documentation

https://docs.snapcraft.io

## BUGS
Please report all bugs with https://bugs.launchpad.net/snapd/+filebug


snapd-env-generator

title: snapd-env-generator(8)

summary: internal tool to set /snap/bin to PATH

text:
# snapd-env-generator(8)

## NAME
snapd-env-generator - internal tool to set /snap/bin to PATH

## SYNOPSIS
snapd-env-generator

## DESCRIPTION
The snapd-env-generator is run by systemd to ensure that the snap bin dir (usually /snap/bin) is path of PATH.

## BUGS
Please report all bugs with https://bugs.launchpad.net/snapd/+filebug

## AUTHOR
michael.vogt@ubuntu.com

## COPYRIGHT
Canonical Ltd.

branch: sisyphus


mksubvolume

package: snapper

title: mksubvolume(8)

summary: Command\-line program to create btrfs subvolume

text:
# mksubvolume(8)

## NAME
mksubvolume - Command-line program to create btrfs subvolume

## SYNOPSIS
mksubvolume [--nocow] [--verbose] {path}

## DESCRIPTION
Mksubvolume is a command-line program to create a btrfs subvolume including adding a fstab entry and mounting the subvolume at the absolute path path.

## OPTIONS
--nocow

Set the no-copy-on-write flag for the subvolume.

-v, --verbose

Increase verbosity.

## AUTHORS
Arvin Schnell <aschnell@suse.com>

## SEE ALSO
snapper(5), btrfs(8), fstab(5), mount(8)


snapper

title: snapper(8)

summary: Command\-line program for filesystem snapshot management

text:
# snapper(8)

## NAME
snapper - Command-line program for filesystem snapshot management

## SYNOPSIS
snapper [--global-opts] command [--command-opts] [command-arguments]

snapper {--help}

## DESCRIPTION
Snapper is a command-line program for filesystem snapshot management. It can create, delete and compare snapshots and undo changes done between snapshots.

Snapper never modifies the content of snapshots. Thus snapper creates read-only snapshots if supported by the kernel. Supported filesystems are btrfs and ext4 (discontinued) as well as snapshots of LVM logical volumes with thin-provisioning. Some filesystems might not be supported depending on your installation.

## CONCEPTS

### Configurations
For each filesystem or subvolume that should be snapshotted by snapper, a configuration file is required, see snapper-configs(5). The setup can be done with the create-config command.

### Snapshots
Snapper distinguishes three types of snapshots.

pre

Pre snapshots should always have a corresponding post snapshot. The intention of pre/post snapshot pairs is to snapshot the filesystem before and after a modification.

post

See pre type.

single

These snapshots have no special relationship to other snapshots.

Note that filesystem-wise all three types are the same.

### Snapshot Description and Userdata
With each snapshot a description and some userdata can be associated. The description is a string. The userdata is a list of key-value pairs where the keys and values are strings.

Do not use non-ASCII characters for the snapshot description, userdata or any other strings, unless you always use the UTF-8 character encoding.

### Automatic Snapshot Creation
Next to manual snapshot creation, snapshots are also created automatically.

•A cronjob or systemd timer creates hourly snapshots, if TIMELINE_CREATE is enabled for a config.

•Certain programs like YaST and zypper create pre/post snapshot pairs when modifying the system.

### Cleanup Algorithms
Snapper provides several algorithms to clean up old snapshots. The algorithms are executed in an hourly cronjob or systemd timer. This can be configured in the corresponding configurations files along with parameters for every algorithm.

number

Deletes old snapshots when a certain number of snapshots is reached.

timeline

Deletes old snapshots but keeps a number of hourly, daily, weekly, monthly, quarterly and yearly snapshots.

empty-pre-post

Deletes pre/post snapshot pairs with empty diffs.

The number and timeline cleanup algorithms can also try to keep the space used by snapshots below a limit and the free space of the filesystem above a limit. For the first condition quota must be setup, see command setup-quota. Additional the NUMBER_LIMIT and TIMELINE_LIMIT variables in the config file must have ranges (min- and max-value). The algorithms will then make two passes:

1.Delete snapshots above the max-value independent of the snapshot and filesystem space.

2.Delete snapshots above the min-value until the limits for the snapshot and filesystem are reached.

The limit for the used space can be configured via the SPACE_LIMIT variable. Note: Only snapshots that have a cleanup algorithm set are taken into account when calculating the space used by snapshots.

The limit for the free space can be configured via the FREE_LIMIT variable.

Note: Since the cleanup is performed asynchronous from creating snapshots the observed snapshots can differ from the expected snapshots according to the limits. Also btrfs stale qgroups can exist temporarily.

### Filters
Some files keep state information of the system, e.g. /etc/mtab. Such files should never be reverted. To help users, snapper allows one to ignore these files.

Filters are read from the files /etc/snapper/filters/*.txt and /usr/share/snapper/filters/*.txt, where for files with the same name the former location has precedence. Each line in those files specifies a pattern. When snapper computes the difference between two snapshots it ignores all files and directories matching any of those patterns by using fnmatch(3) with the flag FNM_LEADING_DIR.

Note that filters do not exclude files or directories from being snapshotted. For that, use subvolumes or mount points.

## GLOBAL OPTIONS
-q, --quiet

Suppress normal output. Error messages will still be printed, though.

-v, --verbose

Increase verbosity.

--logger-type type

Set the logger type. Possible values are none, stdout, logfile and syslog.

--debug

Turn on debugging.

--utc

Display dates and times in UTC. By default, local time is used.

--iso

Display dates and times in ISO format. ISO format is always used for machine-readable outputs.

-t, --table-style style

Specifies table style. Table style is identified by an integer number.

--abbreviate

Try to abbreviate texts in some columns so that tables fit the width of the screen.

--machine-readable format

Specifies a machine-readable output format. Possible options are csv and json.

--csvout

Sets CSV output format. See RFC 4180[1] for the details, except lines end with a LF, not CR+LF.

--jsonout

Sets JSON output format.

--separator character

Specifies the character separator for CSV output format.

--no-headers

Suppress headers for CSV output format.

-c, --config name

Use specified configuration instead of the default configuration. The default configuration is named "root".

--no-dbus

Operate without a DBus connection. Use with caution since a running snapperd will not know about modifications made to the system.

-r, --root path

Operate on target root. Only works together with no-dbus and only for some commands.

-a, --ambit ambit

Operate in the specified ambit. Can be used to override the ambit detection. Allowed ambits are auto, classic and transactional.

--version

Print version and exit.

## COMMANDS
Snapper provides a number of commands. Each command accepts the options listed in the GLOBAL OPTIONS section. These options must be specified before the command name. In addition, many commands have specific options, which are listed in this section. These command-specific options must be specified after the name of the command and before any of the command arguments.

help

Show short help text.

list-configs [options]

List available configurations. --columns columns

Select columns to show separated by comma. Possible columns are: config, subvolume.

create-config [options] subvolume

Create a new configuration for a filesystem or subvolume. For this command you will likely need the global option --config, see GLOBAL OPTIONS and CONCEPTS. -f, --fstype fstype

Manually set filesystem type. Supported values are btrfs, ext4 (discontinued) and lvm. For lvm, snapper uses LVM thin-provisioned snapshots. The filesystem type on top of LVM must be provided in parentheses, e.g. lvm(xfs). Without this option snapper tries to detect the filesystem.

-t, --template name

Name of template for the new configuration file.

delete-config

Delete a configuration for a filesystem or subvolume including all snapshots. For this command you will likely need to global option --config, see GLOBAL OPTIONS and CONCEPTS.

get-config [options]

Displays the settings of the configuration. --columns columns

Select columns to show separated by comma. Possible columns are: key, value.

Columns are not selected when JSON format is used.

set-config configdata

Changes the settings of the configuration. The settings configdata are a list of key-value-pairs separated by spaces and the key and value must be separated by an equal sign, e.g. "NUMBER_CLEANUP=yes NUMBER_LIMIT=10". The value of SUBVOLUME and FSTYPE cannot be changed.

list (ls) [options]

List snapshots. -t, --type type

Selects type of snapshots to list. Possible values are all, single and pre-post.

--disable-used-space

Disable display of used space. Calculating the used space needs some time. Thus this option can speedup the listing.

-a, --all-configs

List snapshots from all configs accessible by the user.

--columns columns

Select columns to show separated by comma. Possible columns are: config, subvolume, number, default, active, date, user, used-space, cleanup, description, userdata, pre-number, post-number, post-date, read-only.

For each snapshot the output consists of several columns. Some need explanation:

\#, Pre # and Post #

The number of the snapshot. For btrfs the number can be followed by a sign. A "-" indicates that the snapshot is the currently mounted snapshot and a "+" indicates that the snapshot will be mounted next time (It is the btrfs default subvolume). If both conditions apply a "*" is displayed.

Used Space

For btrfs the exclusive space of the btrfs quota group corresponding to the snapshot. Display of used space is automatically disabled if not available, e.g. quota not enabled on btrfs.

create [options]

Create a new snapshot. -t, --type type

Specifies the type of the new snapshot. Possible values are single, pre and post.

--pre-number number

For post snapshots the number of the pre snapshot must be provided.

-p, --print-number

Print number of the created snapshot.

-d, --description description

Description for the snapshot.

-c, --cleanup-algorithm cleanup-algorithm

Set the cleanup algorithm for the snapshot.

-u, --userdata userdata

Set userdata for the snapshot. The key-value pairs must be separated by comma and the key and value must be separated by an equal sign, e.g. requestid=42,user=arthur.

--command command

Create a pre and post snapshot and run command in between. If snapper is unable to execute the command at all, it does not take the post snapshot. If the command exits with a non-zero exit code, snapper takes the post snapshot and exits with that same exit code.

--read-only

Create a read-only snapshot. This is the default.

--read-write

Create a read-write snapshot.

--from number

Create a snapshot from the snapshot with the provided number instead of snapshot 0.

--empty

Create an empty snapshot. Only supported on btrfs and with --no-dbus.

modify [options] number

Modify a snapshot. -d, --description description

New description for snapshot.

-c, --cleanup-algorithm cleanup-algorithm

Set the cleanup algorithm for the snapshot.

-u, --userdata userdata

Set userdata for the snapshot. The key-value pairs must be separated by comma and the key and value must be separated by an equal sign, e.g. requestid=42,user=arthur.

--read-only

Set the snapshot read-only.

--read-write

Set the snapshot read-write.

--default

Set the snapshot as default snapshot. Only for btrfs.

delete (remove|rm) number | number1-number2

Delete a snapshot or a range of snapshots. -s, --sync

Sync the filesystem after deleting the snapshots. The details depend on the filesystem type. Btrfs normally asynchronously frees space after deleting snapshots. With this option snapper will wait until the space once used by the deleted snapshots is actually available again.

Snapshot 0 cannot be deleted. For btrfs the currently mounted snapshot and the snapshot that will be mounted next time (the btrfs default subvolume) can also not be deleted.

mount number

Mount a snapshot. Not required for all filesystem types.

umount number

Unmount a snapshot. Not required for all filesystem types.

status [options] number1..number2

Compare the snapshots number1 and number2. This will show a list of files and directories that have been created, modified or deleted in the time between the two snapshots have been made. -o, --output file

Write output to file file.

The output consists of a string encoding the status followed by the filename. The characters of the status string are:

1.A "+" means the file was created, a "-" means the file was deleted. A "c" means the content of the file has changed and a "t" means the type of the file has changed (e.g. from regular file to directory).

2.A "p" means the permissions are have changed.

3.An "u" means the user ownership has changed.

4.A "g" means the group ownership has changed.

5.A "x" means the extended attribute information has changed.

6.An "a" means the ACL information has changed.

If there is no change a "." is outputted.

diff [options] number1..number2 [files]

Compare the snapshots number1 and number2. This will show a diff of the content of files and directories that have been created, modified or deleted in the time between the two snapshots have been made. -i, --input file

Read files to diff from file file.

--diff-cmd command

Command used for comparing files. The default is /usr/bin/diff --new-file --unified. The two files to compare are passed as parameters to the command.

-x, --extensions options

Extra options passed to the diff command.

undochange [options] number1..number2 [files]

Undo changes done between snapshot number1 and number2. -i, --input file

Read files for which to undo changes from file file.

rollback [options] [number]

Creates two new snapshots and sets the default subvolume. Per default the system boots from the default subvolume of the root filesystem. The exact actions depend on whether a number is provided or not:

•Without a number, a first read-only snapshot of the default subvolume is created. A second read-write snapshot of the current system is created. The system is set to boot from the second snapshot.

•With a number, a first read-only snapshot of the current system is created. A second read-write snapshot is created of number. The system is set to boot from the second snapshot.

Rollback is only supported with btrfs and requires a properly configured system.

-p, --print-number

Print number of the second created snapshot.

-d, --description description

Description for the snapshot.

-c, --cleanup-algorithm cleanup-algorithm

Set the cleanup algorithm for the snapshot.

-u, --userdata userdata

Set userdata for the snapshot. The key-value pairs must be separated by comma and the key and value must be separated by an equal sign, e.g. requestid=42,user=arthur.

The rollback command also sets the description, the cleanup algorithm and some userdata unless the values are specified on the command line. This will automate cleanup of snapshots created by rollbacks.

In other ambits than classic the rollback command does what is required to do a rollback. Anyway it is recommended to use specific programs in that case.

setup-quota

Sets up quota. Currently only supported with btrfs.

cleanup [options] cleanup-algorithm

Run the cleanup algorithm cleanup-algorithm. Currently implemented cleanup algorithms are number, timeline and empty-pre-post. To run all cleanup algorithms, all can be provided as cleanup-algorithm. --path path

Cleanup all configs affecting path. Only useful for btrfs.

--free-space free-space

Try to make free-space available. Only useful for btrfs.

xadiff number1..number2 [files]

Compare the extended attributes between snapshot number1 and number2. See examples below:

•+:user.foo for created attributes

•-:user.bar for removed attributes

•-+:security.selinux for modified attributes

## PERMISSIONS
Non-root users can be allowed to use a configuration by setting ALLOW_USERS or ALLOW_GROUPS in the config file. For all operations to work, the user must also be able to read and access the .snapshots directory inside the subvolume. The .snapshots directory must be owned by root and must not be writable by anybody else.

Here are some methods how to achieve that:

•Make the directory accessible for everyone: chmod a+rx .snapshots

•Make the directory accessible for a group the user belongs to, e.g.: chown :users .snapshots

•Make the directory accessible for the user using ACLs, e.g.: setfacl -m u:tux:rx .snapshots

The last method can be performed by snapper, see the SYNC_ACL setting in snapper-configs(5).

## PLUGINS
snapper can execute external scripts after certain actions. Scripts have to be placed in /usr/lib/snapper/plugins. The name has to start with a digit, execution order is alphabetical.

The first argument of a script is the action snapper executed. The following actions are defined:

create-config-pre subvolume fstype

Executed before a new config is created

create-config-post subvolume fstype

Executed after a new config was created

delete-config-pre subvolume fstype

Executed before a config is deleted

delete-config-post subvolume fstype

Executed after a config was deleted

create-snapshot-pre subvolume fstype snapshot-number

Executed before a new snapshot is created

create-snapshot-post subvolume fstype snapshot-number

Executed after a new snapshot was created

modify-snapshot-pre subvolume fstype snapshot-number

Executed before a snapshot is modified

modify-snapshot-post subvolume fstype snapshot-number

Executed after a snapshot was modified

delete-snapshot-pre subvolume fstype snapshot-number

Executed before a snapshot is removed

delete-snapshot-post subvolume fstype snapshot-number

Executed after a snapshot was removed

set-read-only-pre subvolume fstype snapshot-number

Executed before a snapshot is set read-only or read-write

set-read-only-post subvolume fstype snapshot-number

Executed after a snapshot is set read-only or read-write

set-default-snapshot-pre subvolume fstype snapshot-number

Executed before the default snapshot is changed

set-default-snapshot-post subvolume fstype snapshot-number

Executed after the default snapshot was changed

rollback-post subvolume fstype old-snapshot-number new-snapshot-number

Executed after a rollback was done

More actions and arguments can be added any time. Using snapper in the plugins is not allowed.

It is undefined whether the plugins are called from the client (snapper) or server (snapperd).

## FILES
/etc/sysconfig/snapper

Global configuration file.

/etc/snapper/configs

Directory containing configuration files.

/etc/snapper/config-templates

Directory containing configuration templates.

/usr/share/snapper/config-templates

Fallback directory containing configuration templates.

/etc/snapper/filters/*.txt

Filter files.

/usr/share/snapper/filters/*.txt

Fallback filter files.

/var/log/snapper.log

Logfile. Please include this file in bug reports.

## EXIT STATUS
Normally the exit status is 0. If an error occurred the exit status is 1. It is also an error if the exit status of a plugin is not 0.

## NOTES
There is no mechanism to ensure consistency of the files while a snapshot it made. E.g. the files of a database can be inconsistent while the database is running.

Consistency after undochange is not guaranteed. E.g. when the creation of a user is undone, there might still exist files from that user.

Support for individual filesystems, rollback and extended attributes are compile-time options and may not be available.

## HOMEPAGE
http://snapper.io/

## AUTHORS
Arvin Schnell <aschnell@suse.com>

## SEE ALSO
snapper-configs(5), snapper-zypp-plugin(8), snbk(8), pam_snapper(8), btrfs(8), lvm(8), attr(5), acl(5)

## NOTES
1.

RFC 4180

https://tools.ietf.org/html/rfc4180


snapperd

title: snapperd(8)

summary: DBus daemon for snapper

text:
# snapperd(8)

## NAME
snapperd - DBus daemon for snapper

## SYNOPSIS
snapperd

## DESCRIPTION
Snapperd is a DBus daemon for snapper and not for direct use by the user.

## OPTIONS
--logger-type type

Set the logger type. Possible values are none, stdout, logfile and syslog.

--debug

Turn on debugging.

## HOMEPAGE
http://snapper.io/

## AUTHORS
Arvin Schnell <aschnell@suse.com>

## SEE ALSO
snapper(8), dbus-daemon(1)


snbk

package: snapper-backup

title: snbk(8)

summary: Command\-line program to backup snapshots of snapper

text:
# snbk(8)

## NAME
snbk - Command-line program to backup snapshots of snapper

## SYNOPSIS
snbk [--global-opts] command [command-arguments]

snbk {--help}

## DESCRIPTION
Snbk is a command-line program to backup snapshot of snapper. It can transfer and delete backup snapshots on local and remote btrfs filesystems.

## CONCEPTS

### Backup Configurations
For each snapper config there can be several backup configs. Each backup config defines backups of the snapper snapshots at one location, either local or remote, see snapper-backup-configs(5) for possible settings.

### Snapshot Statuses
Each snapshot has a status on the source and on the target. Possible values for the source are:

(empty)

The snapshot is missing and thus considered obsolete on the target. It will be deleted on the target by the next delete command.

read-only

The snapshot is read-only.

read-write

The snapshot is read-write and thus cannot be backed-up.

Possible values for the target are:

(empty)

The snapshot is missing. If the source snapshot is read-only it will be transferred to the target by the next transfer command.

valid

The snapshot is valid. That implies it is read-only.

invalid

The snapshot is invalid. Either the received UUID is wrong or it is read-write. That can happen if the transfer was interrupted. The next transfer command will try to transfer the snapshot again.

legacy

The snapshot is valid, but the source snapshot's metadata has changed since the transfer. The next transfer command will update the snapshot's metadata on the target.

### Visualization
Snbk provides a visualize command for producing graphs in Graphviz DOT format for visualization purposes. Currently, producing tree diagrams for snapshots on both the source and the target is supported. The command output can be piped to the Graphviz tools to generate an image.

Here is an example of producing a tree diagram for snapshots on the source side with the 'root' backup config:

```
# snbk -b root visualize source-tree | dot -T png -o root-source-tree.png

```

In the tree diagram for snapshots, a node has the properties virtual and valid. A virtual node means the corresponding Btrfs subvolume is not managed by a Snapper snapshot. A valid node means the node exists on both the source and target sides, and can be used as a valid Btrfs send parent to reduce disk usage during snapshot transfer or restoration. The root node of the diagram is a specialized virtual node, which is not a Btrfs subvolume, representing the Btrfs filesystem on the source or target.

## GLOBAL OPTIONS
-q, --quiet

Suppress normal output. Error messages will still be printed, though.

-v, --verbose

Increase verbosity.

--debug

Turn on debugging.

--utc

Display dates and times in UTC. By default, local time is used.

--iso

Display dates and times in ISO format. ISO format is always used for machine-readable outputs.

-t, --table-style style

Specifies table style. Table style is identified by an integer number.

--machine-readable format

Specifies a machine-readable output format. Possible options are csv and json.

--csvout

Sets CSV output format. For some commands the CSV output contains more information than the default table output. See RFC 4180[1] for the details, except lines end with a LF, not CR+LF.

--jsonout

Sets JSON output format. For some commands the JSON output contains more information than the default table output.

--separator character

Specifies the character separator for CSV output format.

--no-headers

Suppress headers for CSV output format.

-b, --backup-config name

Use specified configuration instead of all configurations.

--no-dbus

Operate without a DBus connection. Use with caution.

--target-mode name

Only operate on backup configs with the specified target mode.

--automatic

Only operate on backup configs which have the automatic flag set.

--version

Print version and exit.

## COMMANDS
Snbk provides a number of commands. Each command accepts the options listed in the GLOBAL OPTIONS section. These options must be specified before the command name. In addition, many commands have specific arguments, which are listed in this section. These command-specific arguments must be specified after the name of the command.

help

Show short help text.

list-configs

List available configurations.

list (ls)

List snapshots.

transfer [number]

Transfer all missing snapshots or the specified snapshot to the target.

restore [number]

Restore all missing snapshots or the specified snapshot back to the source. A backup config must be specified to run this command. A restart of the `snapperd` service is required to make the restored snapshots visible immediately.

delete (remove|rm) [number]

Delete all obsolete snapshots or the specified snapshot from the target.

transfer-and-delete

Combines transfer and delete.

visualize [options] mode

Produce a Graphviz graph with the specified mode. See Visualization for more detail. -r, --rankdir rankdir

The 'rankdir' diagram attribute of Graphviz. Defaults to 'LR'.

source-tree

Produce a tree diagram of the snapshots on the source.

target-tree

Produce a tree diagram of the snapshots on the target.

## RESTORE
Snapshots can be restored using the restore command. There are more methods to do a restore, e.g. the backup can be mounted and then copied or rsync can be used.

Here we provide an example on how to manually use btrfs send and receive to restore a snapshot on the source system. In general using btrfs send and receive is a bit tricky.

When using target-mode local:

```
# mkdir /.snapshots/42
# cp /backups/root/42/info.xml /.snapshots/42/
# btrfs send /backups/root/42/snapshot | btrfs receive /.snapshots/42

```

When using target-mode ssh-push:

```
# mkdir /.snapshots/42
# scp backups.example.com:/backups/eberich/root/42/info.xml /.snapshots/42
# ssh backups.example.com btrfs send /backups/eberich/root/42/snapshot | btrfs receive /.snapshots/42

```

If the system was reinstalled it is unfortunately in general not possibly to simply use the restored snapshot as the new default snapshot since some files, e.g. /etc/fstab, likely need modifications. Also unfortunately for other subvolumes than root a rollback is not supported.

If there are snapshots on the source to speed up the operation you can also use the -p option for btrfs send.

## NOTES
The content of snapshots transferred must not be changed on the source system. Normally this is ensured since the snapshots are read-only. But it is possible to change snapshots to read-write. This can cause error during transfers in the future.

## PERMISSIONS
Since the target-mode ssh-push needs root permissions on the target it is recommended to use a dedicated machine or container as a target.

## FILES
/etc/snapper/backup-configs

Directory containing configuration files.

## EXIT STATUS
Normally the exit status is 0. If an error occurred the exit status is 1.

## HOMEPAGE
http://snapper.io/

## AUTHORS
Arvin Schnell <aschnell@suse.com>

## SEE ALSO
snapper-backup-configs(5), snapper(8), btrfs-send(8), btrfs-receive(8) rsync(1), sshfs(1)

## NOTES
1.

RFC 4180

https://tools.ietf.org/html/rfc4180


sndiod

package: sndio

title: sndiod(8)

summary: audio/MIDI server

text:
# sndiod(8)

## NAME
sndiod — audio/MIDI server

## SYNOPSIS
sndiod

[-d] [-a flag] [-b nframes] [-C min:max] [-c min:max] [-e enc] [-F device] [-f device] [-j flag] [-L addr] [-m mode] [-Q port] [-q port] [-r rate] [-s name] [-t mode] [-U unit] [-v volume] [-w flag] [-z nframes]

## DESCRIPTION
The sndiod daemon is an intermediate layer between audio or MIDI programs and the hardware. It performs the necessary audio processing to allow any program to work on any supported hardware. By default, sndiod accepts connections from programs running on the same system only; it initializes only when programs are using its services, allowing sndiod to consume a negligible amount of system resources the rest of the time. Systems with no audio hardware can use sndiod to keep hot-pluggable devices usable by default at virtually no cost.

sndiod operates as follows: it exposes at least one sub-device that any number of audio programs can connect to and use as if it was audio hardware. During playback, sndiod receives audio data concurrently from all programs, mixes it and sends the result to the hardware device. Similarly, during recording it duplicates audio data recorded from the device and sends it to all programs. Since audio data flows through the sndiod process, it has the opportunity to process audio data on the fly:

- Change the sound encoding to overcome incompatibilities between software and hardware.

- Route the sound from one channel to another, join stereo or split mono.

- Control the per-application playback volume as well as the master volume.

- Monitor the sound being played, allowing one program to record what other programs play.

Processing is configured on a per sub-device basis, meaning that the sound of all programs connected to the same sub-device will be processed according to the same configuration. Multiple sub-devices can be defined, allowing multiple configurations to coexist. The user selects the configuration a given program will use by selecting the sub-device the program uses.

sndiod exposes MIDI thru boxes (hubs), allowing programs to send MIDI messages to each other or to hardware MIDI ports in a uniform way.

Finally, sndiod exposes a control MIDI port usable for:

- Volume control.

- Common clock source for audio and MIDI programs.

- Start, stop and relocate groups of audio programs.

The options are as follows:

-a flag

Control whether sndiod opens the audio device or the MIDI port only when needed or keeps it open all the time. If the flag is on then the audio device or MIDI port is kept open all the time, ensuring no other program can steal it. If the flag is off, then it's automatically closed, allowing other programs to have direct access to the audio device, or the device to be disconnected. The default is off.

-b nframes

The buffer size of the audio device in frames. A frame consists of one sample for each channel in the stream. This is the number of frames that will be buffered before being played and thus controls the playback latency. The default is 7680 or twice the block size (-z), if the block size is set.

-C min:max, -c min:max

The range of channel numbers for recording and playback directions, respectively any client is allowed to use. This is a subset of the audio device channels. The default is 0:1, i.e. stereo.

-d

Enable debugging to standard error, and do not disassociate from the controlling terminal. Can be specified multiple times to further increase log verbosity.

-e enc

Attempt to configure the device to use this encoding. The default is s16. Encoding names use the following scheme: signedness (s or u) followed by the precision in bits, the byte-order (le or be), the number of bytes per sample, and the alignment (msb or lsb). Only the signedness and the precision are mandatory. Examples: u8, s16le, s24le3, s24le4lsb.

-F device

Same as -f except that if the device is disconnected, the one given with the previous -f or -F option will be used.

-f device

Add this sndio(7) audio device to devices used for playing and/or recording. Preceding per-device options (-aberwz) apply to this device. Sub-devices (-s) that are applied after will be attached to this device. Device mode and parameters are determined from sub-devices attached to it. If no -f option is used, sndiod will use rsnd/0, rsnd/1, ..., rsnd/3.

-j flag

Control whether program channels are joined or expanded if the number of channels requested by a program is not equal to the device number of channels. If the flag is off then client channels are routed to the corresponding device channel, possibly discarding channels not present in the device. If the flag is on, then a single client channel may be sent on multiple device channels, or multiple client channels may be sent to a single device channel. For instance, this feature could be used for mono to stereo conversions. The default is on.

-L addr

Specify a local network address sndiod should listen on; sndiod will listen on TCP port 11025+n, where n is the unit number specified with -U. Without this option, sndiod listens on the UNIX-domain socket only, and is not reachable from any network. If the option argument is ‘-’ then sndiod will accept connections from any address. As the communication is not secure, this option is only suitable for local networks where all hosts and users are trusted.

-m mode

Set the sub-device mode. Valid modes are play, rec, and mon, corresponding to playback, recording and monitoring. A monitoring stream is a fake recording stream corresponding to the mix of all playback streams. Multiple modes can be specified, separated by commas, but the same sub-device cannot be used for both recording and monitoring. The default is play,rec (i.e. full-duplex).

-Q port

Specify an alternate MIDI port to use. If it doesn't work, the one given with the last -Q or -q options will be used. For instance, this allows a USB MIDI controller to be replaced without the need to restart programs using it.

-q port

Expose the given MIDI port. This allows multiple programs to share the port. If no -q option is used, sndiod will use rmidi/0, rmidi/1, ..., rmidi/7.

-r rate

Attempt to force the device to use this sample rate in Hertz. The default is 48000.

-s name

Add name to the list of sub-devices to expose. This allows clients to use sndiod instead of the physical audio device for audio input and output in order to share the physical device with other clients. Defining multiple sub-devices allows splitting a physical audio device into sub-devices having different properties (e.g. channel ranges). The given name corresponds to the “option” part of the sndio(7) device name string.

-t mode

Select the way clients are controlled by MIDI Machine Control (MMC) messages received by sndiod. If the mode is off (the default), then programs are not affected by MMC messages. If the mode is slave, then programs are started synchronously by MMC start messages; additionally, the server clock is exposed as MIDI Time Code (MTC) messages allowing MTC-capable software or hardware to be synchronized to audio programs.

-U unit

Unit number. Each sndiod server instance has a unique unit number, used in sndio(7) device names. The default is 0.

-v volume

Software volume attenuation of playback. The value must be between 1 and 127, corresponding to -42dB and -0dB attenuation in 1/3dB steps. Clients inherit this parameter. Reducing the volume in advance allows a client's volume to stay independent from the number of clients as long as their number is small enough. 18 volume units (i.e. -6dB attenuation) allows the number of playback programs to be doubled. The default is 127.

-w flag

Control sndiod behaviour when the maximum volume of the hardware is reached and a new program starts playing. This happens only when volumes are not properly set using the -v option. If the flag is on, then the master volume is automatically adjusted to avoid clipping. The default is off.

-z nframes

The audio device block size in frames. This is the number of frames between audio clock ticks, i.e. the clock resolution. If a sub-device is created with the -t option, and MTC is used for synchronization, the clock resolution must be 96, 100 or 120 ticks per second for maximum accuracy. For instance, 100 ticks per second at 48000Hz corresponds to a 480 frame block size. The default is 480 or half of the buffer size (-b), if the buffer size is set.

On the command line, per-device parameters (-aberwz) must precede the device definition (-f), and per-sub-device parameters (-Ccjmtvx) must precede the sub-device definition (-s). Sub-device definitions (-s) must follow the definition of the device (-f) to which they are attached.

If no audio devices (-f) are specified, settings are applied as if the default device is specified. If no sub-devices (-s) are specified for a device, a default sub-device is created attached to it. If a device (-f) is defined twice, both definitions are merged: parameters of the first one are used but sub-devices (-s) of both definitions are created. The default sndio(7) device used by sndiod is rsnd/0, and the default sub-device exposed by sndiod is snd/default.

If sndiod is sent SIGINT or SIGTERM, it terminates. If sndiod is sent SIGHUP, it reopens all audio devices and MIDI ports.

By default, when the program cannot accept recorded data fast enough or cannot provide data to play fast enough, the program is paused, i.e. samples that cannot be written are discarded and samples that cannot be read are replaced by silence. If a sub-device is created with the -t option, then recorded samples are discarded, but the same amount of silence will be written once the program is unblocked, in order to reach the right position in time. Similarly silence is played, but the same amount of samples will be discarded once the program is unblocked. This ensures proper synchronization between programs.

## MIDI CONTROL
sndiod creates a MIDI port with the same name as the exposed audio sub-device to which MIDI programs can connect. sndiod exposes the audio device clock and allows audio device properties to be controlled through MIDI.

A MIDI channel is assigned to each stream, and the volume is changed using the standard volume controller (number 7). Similarly, when the audio client changes its volume, the same MIDI controller message is sent out; it can be used for instance for monitoring or as feedback for motorized faders.

The master volume can be changed using the standard master volume system exclusive message.

Streams created with the -t option are controlled by the following MMC messages:

relocate

This message is ignored by audio sndiod clients, but the given time position is sent to MIDI ports as an MTC “full frame” message forcing all MTC-slaves to relocate to the given position (see below).

start

Put all streams in starting mode. In this mode, sndiod waits for all streams to become ready to start, and then starts them synchronously. Once started, new streams can be created (sndiod) but they will be blocked until the next stop-to-start transition.

stop

Put all streams in stopped mode (the default). In this mode, any stream attempting to start playback or recording is paused. Client streams that are already started are not affected until they stop and try to start again.

Streams created with the -t option export the sndiod device clock using MTC, allowing non-audio software or hardware to be synchronized to the audio stream. Maximum accuracy is achieved when the number of blocks per second is equal to one of the standard MTC clock rates (96, 100 and 120Hz). The following sample rates (-r) and block sizes (-z) are recommended:

- 44100Hz, 441 frames (MTC rate is 100Hz)

- 48000Hz, 400 frames (MTC rate is 120Hz)

- 48000Hz, 480 frames (MTC rate is 100Hz)

- 48000Hz, 500 frames (MTC rate is 96Hz)

For instance, the following command will create two devices: the default snd/default and a MIDI-controlled snd/mmc:

```
$ sndiod -r 48000 -z 400 -s default -t slave -s mmc
```

Streams connected to snd/default behave normally, while streams connected to snd/mmc wait for the MMC start signal and start synchronously. Regardless of which device a stream is connected to, its playback volume knob is exposed.

## HOT PLUGGING
If devices specified with -F are unavailable when needed or unplugged at runtime, sndiod will attempt to seamlessly fall back to the last device specified.

sndiod will not automatically switch to specified device that is plugged at runtime. Instead, sndioctl(1) must be used to change the server.device control.

For instance, specifying a USB device with -F following a PCI device with -f allows sndiod to use the USB one preferably when it's connected and to fall back to the PCI one when it's disconnected.

## EXAMPLES
Start server using default parameters, creating an additional sub-device for output to channels 2:3 only (rear speakers on most cards), exposing the snd/default and snd/rear devices:

```
$ sndiod -s default -c 2:3 -s rear
```

Start server creating the default sub-device with low volume and an additional sub-device for high volume output, exposing the snd/default and snd/max devices:

```
$ sndiod -v 65 -s default -v 127 -s max
```

Start server configuring the audio device to use a 48kHz sample frequency, 240-frame block size, and 2-block buffers. The corresponding latency is 10ms, which is the time it takes the sound to propagate 3.5 meters.

```
$ sndiod -r 48000 -b 480 -z 240
```

## SEE ALSO
sndio(7)

## BUGS
Resampling is low quality; down-sampling especially should be avoided when recording.

If -a off is used, sndiod creates sub-devices to expose first and then opens the audio hardware on demand. Technically, this allows sndiod to attempt to use one of the sub-devices it exposes as an audio device, creating a deadlock. There's nothing to prevent the user from shooting themselves in the foot by creating such a deadlock.


sngrep

package: sngrep

title: sngrep(8)

summary: SIP Messages flow viewer

text:
# sngrep(8)

## NAME
sngrep - SIP Messages flow viewer

## SYNOPSIS
sngrep [-hVcivNqrD] [-IO pcap_dump ] [-d dev ] [-l limit ] [-B buffer ] [-k keyfile ] [-f config_file ] [-F] [-T text_file ] [-t] [-R] [-LHE capture_url ] [ <match expression> ] [ <bpf filter> ]

## DESCRIPTION
sngrep is a terminal tool that groups SIP (Session Initiation Protocol) Messages by Call-Id, and displays them in arrow flows similar to the used in SIP RFCs. The aim of this tool is to make easier the process of learning or debugging SIP. It recognizes UDP, TCP and partially TLS SIP packets and understands bpf filter logic in the same way ngrep (8) and tcpdump (1) does.

## OPTIONS
-h

Display help and usage information.

-V

Display version information.

-c

Only display dialogs starting with an INVITE request.

-r

Capture RTP packets payload.

-i

Make match expression case insensitive.

-v

Invert match expression.

-I pcap_dump

Read packets from pcap file instead of network devices. This option can be used with bpf filters.

-O pcap_dump

Save all captured packets to a pcap file. This option can be used with bpf filters. When receiving a SIGUSR1 signal sngrep will reopen the pcap file in order to facilitate pcap file rotation.

-B buffer

Set pcap buffer size in MB (default: 2)

-d dev

Use this capture device instead of default (any). Special keyword 'any', a device name like 'eth0' or a comma separated list like 'eth1,eth3'. This overrides the settings in the configuration file.

-k keyfile

RSA private keyfile to decrypt captured packets.

-l limit

Set capture limit to N dialogs. Limit must be a numeric value above 1 and can not be disabled. This is both security measure to avoid unlimited memory usage and also used internally in sngrep to manage hash table sizes.

-R

Rotate calls when capture limit has been reached. Although not recommended, this can be used to keep sngrep running during long times with some control over consumed memory.

-N

Don't display sngrep interface, just capture.

-q

Don't print captured dialogs in no interface mode.

-H

Homer sipcapture url (udp:X.X.X.X:XXXX).

-L

Listen for encapsulated packets (udp:X.X.X.X:XXXX).

-E

Enable parsing of captured HEP3 packets.

-D

Print active configuration settings and exit.

-f config_file

Read configuration from file.

-F

Do not read configuration from default config file.

-T text_file

Save pcap to text file.

-t

Capture and parse RTP telephone-event packets.

match expression

Match given expression in Messages' payload. If one request message matches the given expression, the following messages within the same dialog will be also captured.

bpf filter

Selects a filter that specifies what packets will be parsed. If no bpf filter is given, all SIP packets seen on the selected interface or pcap file will be displayed. Otherwise, only packets for which bpf filter is `true' will be displayed.

## Interface
There are multiple windows to provide different information. Most of the program windows have a help dialog with a brief description and useful keybindings.

##  Call List Window
The first window that sngrep shows is Call List window and display the different SIP Call-Ids found in messages. The displayed columns depends on your terminal width and your custom configuration. You can move between dialogs with arrow keys and selected them using Spacebar. Selecting multiple dialogs will display all them in Call flow window and Call Raw window, and will allow to save only the selected message dialogs to a PCAP file.

##  Call Flow Window
This window will a flow diagram of the selected dialogs' messages. The selected message payload will be displayed in the right side of the window. You can move between messages using arrow keys and select them using Spacebar. Selecting multiple messages will display the Message Diff Window.

##  Call Raw Window
This window will display the selected dialog messages in plain text. It was designed to allow copying the messages payload easily. You can also save the displayed information to a text file from this screen.

##  Column selection Window
Columns displayed in Call List can be updated in this window. You can add or remove columns or change their order in the list. Additionally, you can save column state to be use in next sngrep execution.

##  Message Diff Window
This window will compare two messages. Right now the comparison is done searching each line in the other message, highlighting those not found exactly. You can reach this window by selecting two messages using Spacebar in Call Flow window

## FILES
Full paths below may vary between installations.

/etc/sngreprc

System-wide configuration file. Some sngrep options can be overridden using this file.

~/.sngreprc

User's configuration file. If this file is present, options will be override system-wide configurations.

## BUGS
Please report bugs to the sngrep github project at

http://github.com/irontec/sngrep

Non-bug, non-feature-request general feedback should be sent to the author directly by email.

## AUTHOR
Written by Ivan Alonso [a.k.a. Kaian] <kaian@irontec.com>.