在Linux系统中,默认情况下并没有像Windows那样的回收站功能。不过,可以通过一些方法实现类似回收站的机制,并支持文件快照功能。以下是几种解决方案:
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
如果你使用GNOME或KDE桌面环境,它们自带了图形化回收站功能。
# GNOME
gio trash filename
# 列出被删除文件
gio trash --list
# 恢复文件
gio trash --restore
对于支持快照的文件系统(如Btrfs/ZFS),可以创建定期快照来实现文件恢复。
# 创建快照
sudo btrfs subvolume snapshot / /snapshots/$(date +%Y-%m-%d)
# 恢复文件
cp /snapshots/2023-11-15/home/user/file.txt /home/user/
# 创建快照
zfs snapshot pool/filesystem@$(date +%Y-%m-%d)
# 恢复文件
zfs rollback pool/filesystem@2023-11-15
可以创建简单的bash脚本实现回收站功能:
#!/bin/bash
# ~/.bashrc 或单独脚本
trash() {
mkdir -p ~/.trash
mv "$@" ~/.trash/
}
restore() {
mv ~/.trash/"$1" ./
}
emptytrash() {
rm -rf ~/.trash/*
}
snapper
工具(openSUSE等发行版)snapper
是一个强大的快照管理工具:
# 安装
sudo zypper install snapper
# 创建配置
sudo snapper -c home create-config /home
# 创建快照
sudo snapper -c home create --description "Before changes"
如果文件已经被rm
删除,可以尝试:
# 使用extundelete(ext文件系统)
sudo extundelete /dev/sdX --restore-file /path/to/file
# 使用testdisk
sudo testdisk /dev/sdX
选择哪种方案取决于你的具体需求和使用环境。对于桌面用户,trash-cli
或桌面环境的回收站是最简单的解决方案;对于服务器环境,文件系统快照或专业备份工具更为合适。