插件窝 干货文章 Linux回收站删除文件快照

Linux回收站删除文件快照

回收站 文件 快照 trash 694    来源:    2025-05-05

在Linux系统中,默认情况下并没有像Windows那样的回收站功能。不过,可以通过一些方法实现类似回收站的机制,并支持文件快照功能。以下是几种解决方案:

1. 使用trash-cli工具(推荐)

trash-cli是一个命令行工具,提供了类似回收站的功能,支持文件恢复。

安装:

# Debian/Ubuntu
sudo apt install trash-cli

# RHEL/CentOS
sudo yum install trash-cli

# Arch Linux
sudo pacman -S trash-cli

使用:

# 删除文件到回收站
trash-put filename

# 列出回收站内容
trash-list

# 恢复文件
trash-restore

# 清空回收站
trash-empty

2. 使用GNOME/KDE回收站

如果你使用GNOME或KDE桌面环境,它们自带了图形化回收站功能。

命令行访问:

# GNOME
gio trash filename

# 列出被删除文件
gio trash --list

# 恢复文件
gio trash --restore

3. 使用Btrfs/ZFS文件系统快照

对于支持快照的文件系统(如Btrfs/ZFS),可以创建定期快照来实现文件恢复。

Btrfs示例:

# 创建快照
sudo btrfs subvolume snapshot / /snapshots/$(date +%Y-%m-%d)

# 恢复文件
cp /snapshots/2023-11-15/home/user/file.txt /home/user/

ZFS示例:

# 创建快照
zfs snapshot pool/filesystem@$(date +%Y-%m-%d)

# 恢复文件
zfs rollback pool/filesystem@2023-11-15

4. 自定义回收站脚本

可以创建简单的bash脚本实现回收站功能:

#!/bin/bash
# ~/.bashrc 或单独脚本
trash() {
    mkdir -p ~/.trash
    mv "$@" ~/.trash/
}

restore() {
    mv ~/.trash/"$1" ./
}

emptytrash() {
    rm -rf ~/.trash/*
}

5. 使用snapper工具(openSUSE等发行版)

snapper是一个强大的快照管理工具:

# 安装
sudo zypper install snapper

# 创建配置
sudo snapper -c home create-config /home

# 创建快照
sudo snapper -c home create --description "Before changes"

注意事项:

  1. 回收站功能需要足够的磁盘空间
  2. 定期清理回收站避免占用过多空间
  3. 对于重要数据,建议使用专业的备份方案
  4. 服务器环境建议使用文件系统快照或专业备份工具

恢复已删除文件(无回收站情况):

如果文件已经被rm删除,可以尝试:

# 使用extundelete(ext文件系统)
sudo extundelete /dev/sdX --restore-file /path/to/file

# 使用testdisk
sudo testdisk /dev/sdX

选择哪种方案取决于你的具体需求和使用环境。对于桌面用户,trash-cli或桌面环境的回收站是最简单的解决方案;对于服务器环境,文件系统快照或专业备份工具更为合适。