Linux系统防止误删除文件

1.前言

曾几何时,一条 rm -rf/useless /* 命令干掉了我们需要的文件,也干掉的整个系统,

这是是不是与哭无泪啊。

像这种使用 rm 命令误删除文件的情况,我们会注意,但是我们不能保证百分百的不会出现这种情况,毕竟事情总有偶然,那么对于这种情况我们是不是就束缚无策呢,不!我们有相应的解决办法,那就是使用 trash-cli。

1.1 trash-cli介绍

Trash-cli 提供一套命令行下的回收站工具。在 Gnome 环境下,这个命令行下的回收站和 Gnome 回收站是统一的,无论是在命令行下还是在图形环境下,删除的文件都会进入这个回收站。

1.2 下载trash-cli工具包

在github上提供了trash-cli的zip包下载链接:https://github.com/andreafrancia/trash-cli

1.3 安装trash-cli工具

#安装环境

[[email protected] ~]# uname -r
2.6.32-504.el6.x86_64
[[email protected] ~]# uname -m
x86_64
[[email protected] ~]# cat /etc/redhat-release
CentOS release 6.6 (Final)

#解压安装trash-cli

[[email protected] tools]# ls
trash-cli-master.zip
[[email protected] tools]# unziptrash-cli-master.zip
[[email protected] tools]# cd trash-cli-master
[[email protected] trash-cli-master]# python setup.pyinstall

1.4 trash-cli管理命令说明

#trash-cli安装完成后会生成如下几个命令

[[email protected] trash-cli-master]# ls -l/usr/bin/|grep trash
-rwxr-xr-x    1 root root        123 Mar 2 19:34 trash
-rwxr-xr-x    1 root root        125 Mar 2 19:34 trash-empty
-rwxr-xr-x    1 root root        124 Mar 2 19:34 trash-list
-rwxr-xr-x    1 root root        123 Mar 2 19:34 trash-put
-rwxr-xr-x    1 root root        127 Mar 2 19:34 trash-restore
-rwxr-xr-x    1 root root        122 Mar 2 19:34 trash-rm

功能说明:

trash-put         //将文件或目录移入回收站

trash-empty  days    //清空回收站,trash-empty  10 表示清空十天以前的文件

trash-list         //列出回收站中的文件

trash-restore      //还原回收站中的文件

trash-rm         // 删除回首站中的单个文件

#特别提示:trash-put命令会把我们想要删除的文件移动到 ~/.local/share/Trash/files 中当我们使用trash-restore不能恢复时可以从~/.local/share/Trash/files目录中将需要恢复的文件或者目录cp到相应路径,相关信息记录在~/.local/share/Trash/info中。

1.5 用trash-cli替换rm命令

#为了系统安全着想我们将rm命令替换为trash-put。防止误删除操作。

[[email protected] ~]# echo ‘aliasrm="trash-put"‘ >>/etc/profile
[[email protected] ~]# tail -1 /etc/profile
alias rm="trash-put"
[[email protected] ~]# . /etc/profile

1.6 trash-cli工具使用示例

示例1:删除/etc/issue文件,并恢复。

[[email protected] ~]# cat /etc/issue
CentOS release 6.6 (Final)
Kernel \r on an \m
[[email protected] ~]# rm /etc/issue
[[email protected] ~]# cat /etc/issue
cat: /etc/issue: No such file ordirectory
[[email protected] ~]# cp~/.local/share/Trash/files/issue  /etc/
[[email protected] ~]# cat /etc/issue
CentOS release 6.6 (Final)
Kernel \r on an \m

示例2:误操作执行了rm -rf  /* 恢复

#当我们执行了rm -rf  /* 操作即使立刻Ctrl+c终止操作也会删除一部分内容

[[email protected] ~]# rm -rf /*
trash-put: cannot trash directory`/boot‘
^CTraceback (most recent call last):
 File "/usr/bin/trash-put", line 5, in <module>
   sys.exit(main())
 File "/usr/lib/python2.6/site-packages/trashcli/put.py", line17, in main
   ).run(sys.argv)
 File "/usr/lib/python2.6/site-packages/trashcli/put.py", line46, in run
   self.trash_all(args)
 File "/usr/lib/python2.6/site-packages/trashcli/put.py", line52, in trash_all
   self.trashcan.trash(arg)
 File "/usr/lib/python2.6/site-packages/trashcli/put.py", line248, in trash
   trashed_file = trash_dir.trash(file)
 File "/usr/lib/python2.6/site-packages/trashcli/put.py", line372, in trash
   self.move(path, where_to_store_trashed_file)
 File "/usr/lib/python2.6/site-packages/trashcli/fs.py", line47, in move
   return shutil.move(path, str(dest))
 File "/usr/lib64/python2.6/shutil.py", line 257, in move
   copytree(src, real_dst, symlinks=True)
 File "/usr/lib64/python2.6/shutil.py", line 156, in copytree
   copy2(srcname, dstname)
 File "/usr/lib64/python2.6/shutil.py", line 95, in copy2
   copyfile(src, dst)
 File "/usr/lib64/python2.6/shutil.py", line 52, in copyfile
   copyfileobj(fsrc, fdst)
 File "/usr/lib64/python2.6/shutil.py", line 31, in copyfileobj
   fdst.write(buf)
KeyboardInterrupt

#终止删除后发现ls,cp等命令已经都不能执行了

[[email protected] ~]# ls
-bash: /bin/ls: No such file or directory
[[email protected] ~]# cp
-bash: /bin/cp: No such file ordirectory

#切换到回收站的文件夹下也无法查看其中内容了

[[email protected] ~]# cd~/.local/share/Trash/files/
[[email protected] files]# ls
-bash: /bin/ls: No such file ordirectory

#使用rsync命令将其误删除的文件恢复到 /目录下

[[email protected] ~]# cd~/.local/share/Trash/files/
[[email protected] files]# rsync -avzP ./* /
sending incremental file list
bin/
bin/alsaunmute
        123 100%    0.00kB/s    0:00:00 (xfer#1, to-check=151/155)
bin/arch
      27776 100%    2.65MB/s    0:00:00 (xfer#2, to-check=150/155)
bin/awk -> gawk
bin/basename
      26264 100%    2.09MB/s    0:00:00 (xfer#3, to-check=148/155)
bin/bash
     940416 100%    7.60MB/s    0:00:00 (xfer#4, to-check=147/155)

#恢复完成后再次ls查看命令以恢复,跟目录下目录页恢复了

[[email protected] files]# ls
bin boot  dev
[[email protected] files]# cd /
[[email protected] /]# ls
bin  dev  home  lib64      media  opt   root selinux  srv  tmp var
boot etc  lib   lost+found mnt    proc  sbin server   sys  usr

1.7 清空回收站内文件

#清空所有

[[email protected] ~]# trash-empty

#清空7天以前的

[[email protected] ~]# trash-empty 7
时间: 2024-10-20 14:20:02

Linux系统防止误删除文件的相关文章

linux系统下修改文件夹目录权限

linux系统下修改文件夹目录权限 文件夹权限问题 Linux.Fedora.Ubuntu修改文件.文件夹权限的方法差不多.很多人开始接触Linux时都很头痛Linux的文件权限问题.这里告诉大家如何修改Linux文件-文件夹权限.以主文件夹下的一个名为cc的文件夹为例. 下面一步一步介绍如何修改权限: 1.打开终端.输入su(没 Linux.Fedora.Ubuntu修改文件.文件夹权限的方法差不多.很多人开始接触Linux时都很头痛Linux的文件权限问题.这里告诉大家如何修改Linux文件

windows系统和Linux系统之间拷贝文件攻击--pscp

putty secure copy == pscp,是putty提供的文件传输攻击,通过ssh两件,在两台机器之间安全传输文件 获取pscp工具:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html,将.exe文件放在windows的system32文件夹下,或者自己设置环境变量.然后在dos命令窗口下即可直接调用. -r 复制目录下所有文件 -l 对方机器(Linux)用户名(root) -pw 密码 使用方法: 1.本

关于Linux系统清理/tmp/文件夹的原理

转自:http://www.opsers.org/base/clean-up-on-the-linux-system-tmp-folder-you-may-want-to-know.html 我们知道,在Linux系统中/tmp文件夹里面的文件会被清空,至于多长时间被清空,如何清空的,可能大家知识的就不多了,所以,今天我们就来剖析一个这两个问题. 在RHEL\CentOS\Fedora\系统中(本次实验是在RHEL6中进行的) 先 来看看tmpwatch这个命令,他的作用就是删除一段时间内不使用

Linux系统编程_2_文件I/O

这里说的的文件I/O指的是不带缓存的: 1.关于带缓存的IO操作和不带缓存的IO操作,参见另一篇文章: 带缓存IO和不带缓存IO详解 Linux中的文件IO(不带缓存的IO)通常用的有以下几个: open    read    write    lseek   close 2.open的参数 int fd(filename, mode); mode 通常可以是O_RDONLY(只读)  O_WRONLY(只写)  O_RDWR(读写) 必须指定且只能指定一个! 其他的可供选择,可通过或运算添加:

Linux系统之间拷贝文件的技巧总结

日常工作中需要经常从远程或本地服务器拷贝/移动大量文件.遇到文件比较多比较散的时候速度较慢,所以在想有没有较快的方式.经过搜罗.整理.验证,大概有以下几种. 首先,无论本地还是远程,需要移动或拷贝的文件较多且都不太大时,用cp命令和mv命令效率较低,可以先使用tar工具对将要拷贝/移动的内容进行打包/压缩,之后再进行拷贝/移动,最后再解包/解压缩. 另外,也是很关键的一个技巧,即,不必在tar打包/压缩完毕之后再进行拷贝,解包/解压缩,可以通过管道一边打包/压缩另一边执行拷贝解包/解压缩. 比如

两台Linux系统之间传输文件的几种方法

scp传输 当两台LINUX主机之间要互传文件时可使用SCP命令来实现 scp传输速度较慢,但使用ssh通道保证了传输的安全性 复制文件 将本地文件拷贝到远程 scp 文件名 –用户名@计算机IP或者计算机名称:远程路径 从远程将文件拷回本地 scp –用户名@计算机IP或者计算机名称:文件名 本地路径 命令格式 scp local_file [email protected]_ip:remote_folder 或者 scp local_file [email protected]_ip:rem

使用WinSCP在Windows和Linux系统之间传输文件

小梅哥编写,未经许可,严禁用于任何商业用途 2018年6月30日 在日常SoC开发中,我们经常需要在Windows和Linux系统之间传输文件,例如在Windows系统上的DS-5集成开发环境中编写好的Linux应用程序需要传递到Linux嵌入式开发板中(例如SoC FPGA开发板),或者需要将Linux系统中的文件拷贝到Windows上进一步操作处理,就涉及到两者之间的文件传输.实现上述场景中文件传输的一种比较便捷的方式,是使用SCP方式.在Windows系统中,可以通过安装WinSCP软件来

九月个人考核:如何识别Linux系统中指定文件(/etc/fstab)的关联包

一,如何识别Linux系统中指定文件(/etc/fstab)的关联包 1.输入rpm -qf /etc/fstab ,此命令能列出提供/etc/fstab这个文件的包. [[email protected] ~]# rpm -qf /etc/fstabsetup-2.8.71-7.el7.noarch[[email protected] ~]# rpm -qf /etc/sshopenssh-7.4p1-12.el7_4.x86_64 原文地址:http://blog.51cto.com/136

将u盘的文件复制到虚拟机上的linux系统上面—》文件挂载(文字+图解)

虚拟机中操作系统.CentOs(无图形界面) 没有图形界面的linux,我也没有配置网络,现在需要把文件复制到linux系统上面,我这里就使用了u盘挂载的方式,获得了U盘中的文件. 1.VMware中设置USB的属性 编辑虚拟中系统信息 USB的三个信息必须全部勾选 2.开启VMware的USB服务 记得查看一下是否开启改USB服务(没注意,坑了好久才查找原因),我的电脑右键->管理->服务和应用程序 ->VMware USB Arbitration Service右键->开启服务