• Linux命令之shred命令


    一、shred命令简介

      销毁数据的方式分为擦除、消除、清除、销毁级别。我们日常用的rm命令相当于是擦除,执行了删除操作,数据实际上还是存在磁盘上的。shred是一条终端命令,重复覆盖指定的文件,以使即使非常昂贵的硬件探测也难以恢复数据。shred命令删除一个文件之后,文件中的数据会被多次随机覆写,相当于执行的是清除级别的销毁数据操作。shred命令执行后文件系统会在原来的位置覆盖指定的数据。传统的文件系统符合此条件,但许多现代的文件系统都不符合条件。以下是会令shred 无效或不担保一定有效的文件系统的。比如有冗余镜像的Raid系统;不时进行快照记录的文件系统,像Network Applicance 的NFS 服务器等。shred命令只能清除文件,不能清除目录。博文实验环境:

    • 操作系统:centos7.6
    • shred命令版本:8.22
    • 文件系统格式:xfs

    二、使用示例

    1、获取命令帮助

    [bdsc@s142 ~]$ shred --help
    Usage: shred [OPTION]… FILE…

    2、查看命令版本

    [bdsc@s142 ~]$ shred --version
    shred (GNU coreutils) 8.22
    Copyright © 2013 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html.
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.

    Written by Colin Plumb.

    3、使用shred清除单个文件数据

      直接执行shred命令,静默状态下执行3次覆盖写的操作,没有任何输出,执行完成后文件还存在,但是你们的数据已经被覆盖多次,查看文件显示内容是乱码。

    [bdsc@s142 ~]$ echo “This is a test about shred” > hi.txt
    [bdsc@s142 ~]$ cat hi.txt
    This is a test about shred
    [bdsc@s142 ~]$ shred hi.txt
    [bdsc@s142 ~]$ cat hi.txt
    \6)z^/߆*fH-A;=R맭bR؂q\j-UDpϯرhTﳡ

    在这里插入图片描述

    4、显示命令执行详细信息

      我们可以使用-n指定覆盖次数,可以使用-v参数显示程序执行的详细信息。我们可以看到当同时粉碎多个文件的时候实际运行是逐个文件执行的,执行覆盖使用的字符是随机、0或者F。

    [bdsc@s142 ~]$ shred -v -n 5 hi.txt hello.txt
    shred: hi.txt: pass 1/5 (random)…
    shred: hi.txt: pass 2/5 (ffffff)…
    shred: hi.txt: pass 3/5 (random)…
    shred: hi.txt: pass 4/5 (000000)…
    shred: hi.txt: pass 5/5 (random)…
    shred: hello.txt: pass 1/5 (random)…
    shred: hello.txt: pass 2/5 (000000)…
    shred: hello.txt: pass 3/5 (random)…
    shred: hello.txt: pass 4/5 (ffffff)…
    shred: hello.txt: pass 5/5 (random)…
    在这里插入图片描述

    5、最后执行0覆盖

      使用-z参数在执行默认或者指定粉碎次数后最后执行一次0字符覆盖操作。这样去查看文件的时候显示是空文件,可以起到隐藏了执行shred操作的作用。

    [bdsc@s142 ~]$ shred -v -z hi.txt
    shred: hi.txt: pass 1/4 (random)…
    shred: hi.txt: pass 2/4 (random)…
    shred: hi.txt: pass 3/4 (random)…
    shred: hi.txt: pass 4/4 (000000)…
    [bdsc@s142 ~]$ cat hi.txt
    在这里插入图片描述

    6、从指定文件取随机字节粉碎文件

      执行粉碎文件时可以指定使用另外文件中的随机字节,对指定文件大小有要求,太小的话无法满足取出指定次数的随机字节要求。

    [bdsc@s142 ~]$ shred -v -n 6 --random-source=jumpserver.tar.gz hello.txt
    shred: hello.txt: pass 1/6 (random)…
    shred: hello.txt: pass 2/6 (555555)…
    shred: hello.txt: pass 3/6 (aaaaaa)…
    shred: hello.txt: pass 4/6 (ffffff)…
    shred: hello.txt: pass 5/6 (000000)…
    shred: hello.txt: pass 6/6 (random)…
    在这里插入图片描述

    7、粉碎文件并删除

      shred命令执行时加上-u参数就是完整的清除操作,执行了此操作后被删除的文件均无法恢复。

    [bdsc@s142 ~]$ shred -v -u jumpserver.tar.gz
    shred: jumpserver.tar.gz: pass 1/3 (random)…
    shred: jumpserver.tar.gz: pass 2/3 (random)…
    shred: jumpserver.tar.gz: pass 3/3 (random)…
    shred: jumpserver.tar.gz: removing
    shred: jumpserver.tar.gz: renamed to 00000000000000000
    shred: 00000000000000000: renamed to 0000000000000000
    shred: 0000000000000000: renamed to 000000000000000
    shred: 000000000000000: renamed to 00000000000000
    shred: 00000000000000: renamed to 0000000000000
    shred: 0000000000000: renamed to 000000000000
    shred: 000000000000: renamed to 00000000000
    shred: 00000000000: renamed to 0000000000
    shred: 0000000000: renamed to 000000000
    shred: 000000000: renamed to 00000000
    shred: 00000000: renamed to 0000000
    shred: 0000000: renamed to 000000
    shred: 000000: renamed to 00000
    shred: 00000: renamed to 0000
    shred: 0000: renamed to 000
    shred: 000: renamed to 00
    shred: 00: renamed to 0
    shred: jumpserver.tar.gz: removed
    [bdsc@s142 ~]$ ll
    total 0在这里插入图片描述

    三、使用语法及参数说明

    1、使用语法

    用法:shred [OPTION]… FILE…

    2、参数说明

    参数参数说明
    -f, --force必要时修改权限以使目标可写
    -n, --iterations=N覆盖N 次(默认3次)
    –random-source=file从指定文件中取出随机字节
    -s, --size粉碎数据为指定字节的碎片(单位K,M,G)
    -u, --remove覆盖后截断并删除文件
    -v, --verbose显示命令执行详细信息
    -x, --exact不要将文件大小四舍五入到下一个完整块
    -z, --zero添加最后一个零覆盖以隐藏清除动作
    –help获取命令帮助
    –version显示版本信息
  • 相关阅读:
    UBoot初次编译
    selenium-XPATH定位
    【27】c++设计模式——>迭代器模式(1)
    可逆矩阵的性质
    【毕业设计】基于java的健康食谱推荐小程序源码
    实现一个函数,判断aim是 否是str1和str2交错组成。
    flutter 生命周期详解
    MyBatis、MyBatisPlus转义数据库关键字
    Java实现业务异步的几种方案
    基于C++的文件加密解密(密码学课程设计)
  • 原文地址:https://blog.csdn.net/carefree2005/article/details/126145228