Trash management

To prevent accidental deletion of files, you can use a trash can. To ensure compatibility between multiple applications, you can use software (CLI, GUI or Library) that follow the FreeDesktop.org's Trash specification.

Note: Some applications can use a trash can per filesystem (see the specification)
Warning: When deleting files on another filesystem, usage of a trash can induce some latency because the files will be transferred between filesystems. In this case, you might want to use a implementation that create a trash folder per filesystem (See Trash directories in the specification).

Trash creation

Some GUI file managers, such as GNOME Files and Dolphin, natively support moving files into the trash. There are also some CLI tools:

  • glib2 provides a gio trash file... command to move files into the trash, while gio trash --empty empties the trash. See also "trash" in gio(1) §COMMANDS. The gvfs package is required to fully support trash management through the gio trash command.
  • kde-cli-tools provides a kioclient5 command that can be used as kioclient5 move file trash:/ to move file to the trash.
  • trash-cli A command-line interface implementing FreeDesktop.org's Trash specification.
https://github.com/andreafrancia/trash-cli || trash-cli
  • trashman A Python trash manager.
https://github.com/Kwpolska/trashman || trashmanAUR
  • rmtrash trash-put made compatible to GNUs rm and rmdir.
https://github.com/PhrozenByte/rmtrash || rmtrashAUR
  • trash-d drop-in replacement for GNU rm, focusing on compatibility and with much better performance, written in D.
https://github.com/rushsteve1/trash-d || trash-dAUR
  • trashy simple, fast, and featureful alternative to rm and trash-cli written in rust
https://github.com/oberblastmeister/trashy || trashyAUR
  • gtrash A Featureful Trash CLI manager written in Go
https://github.com/umlx5h/gtrash || gtrash-binAUR
https://theimpossibleastronaut.com/rmw-website/ || rmwAUR

Trash space usage management

To prevent the trash can from using too much space, you can empty it yourself, or have a pruning policy

Software list

  • autotrash Tool to automatically purge old trashed files
https://github.com/bneijt/autotrash || autotrashAUR

Criteria

  • make sure to have at least x MB of free space
  • delete files older than x days
  • only empty if you have less than x MB of free space (useful in combination of previous criteria)
  • maximum trash can size
  • file size
  • file type
  • original path

Automation

To automate emptying the trash can, you can use cron, systemd/Timers, or inotify (using inotify, only new deletion would trigger the trash can automation)

Troubleshooting

Unable to find or create trash directory

External drives

/etc/fstab might not be set correctly. Note that ID must be replaced by your own user id by $ id.

/etc/fstab
# <device>                                <dir>              <type>    <options>         <dump> <fsck>
UUID=75667752-8b06-11ea-bc55-0242ac130003 /externalDrive     ntfs-3g   defaults,uid=ID   0      1

Make sure that the root directory of the drive contains ~/.Trash-1000/{expunged,files,info} and set relevant read permissions for the directory and sub-directory.

This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.