热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux下处理隐私骚操作!

每个人都有自己的隐私尤其是数字信息时代更是如此小到自己写下的情书大到公司商业机密抑或是偷偷下载的日本XXX.avi这些隐私放桌面——找死放某个隐秘目录——麻烦放垃圾筒……谁会这么干

每个人都有自己的隐私
尤其是数字信息时代更是如此
小到自己写下的情书
大到公司商业机密
抑或是偷偷下载的日本XXX.avi

《Linux下处理隐私骚操作!》

这些隐私
放桌面——找死
放某个隐秘目录——麻烦
放垃圾筒……谁会这么干
真想有个工具
自动帮我压缩
自动帮我放到安全位置

《Linux下处理隐私骚操作!》

嗯……
良许今天就带你实现这个过程

1. 工具安装

要实现上述那个不为人知的过程,我们需要安装两个工具:inotify-tools 和 gzip 。

如果你使用的是 Ubuntu 或者其它基于 Debian 的发行版,那么可以使用 apt-get 命令安装以上两个工具。在其他 Linux 发行版上,则需要使用对应的包管理工具。

$ sudo apt-get install inotify-tools gzip

2. inotify-tools 使用详解

顾名思义,inotify-tools 是包含了很多工具的工具集。我们首先来测试一下,如果一个目录里有新文件创建时,会捕捉到什么事件。这里我们将使用到一个名为 inotifywatchinotify-tools 的工具。

我们先在任意位置创建一个名为 incoming 的新目录:

$ mkdir incoming

然后再执行以下命令开始监测此目录:

$ inotifywatch -v incoming

这个命令将使用 inotify 工具来监视 incoming 目录中的所有文件系统事件。我们使用这个工具的目的就是来监测在目标目录下创建新文件时会有什么事件产生。

在这里,-v 选项打印工具的输出信息。同时,它还有超时选项 -t ,但在这里我们未指定,所以它将持续收集事件,直到我们按 Ctrl + C 才会退出。

命令运行之后终端将会打印以下信息:

《Linux下处理隐私骚操作!》

接下来,打开一个新的终端窗口并切换到刚刚建立的 incoming 目录。然后再使用 touch 命令创建名为 newfile 的新文件。

$ cd incoming/
$ touch newfile

现在我们再回到第一个终端窗口,按下 CTRL+C 停止 inotifywatch 命令。我们将得到以下信息:

《Linux下处理隐私骚操作!》

在结果信息里,我们可以看到 inotifywatch 捕获到 4 个事件,包括:属性、创建、打开、写入并关闭。这 4 个事件都是由 touch newfile 这个命令产生的。

当然,这几个事件都只是 inotifywatch 所能捕获的众多事件的一小部分,更多事件我们可以在它的主页上查看。

但是,很多情况下我们并不需要太多事件。假如我们只对下面两个事件感兴趣:

  • create :在目标目录中创建文件时
  • moved_to :当文件从另一个位置移动到目标目录时

我们再来使用 inotifywatch 工具,但是这次只让它监视这两个事件。我们可以使用以下命令来达到这个目的:

$ inotifywatch -v -e create -e moved_to incoming

然后再切换到第二个终端窗口中,我们创建一个新的文件,再更改它的内容。

再之后,我们在 /tmp 目录下随便再创建个文件,再将它移动到目标目录。整个过程如以下命令所示:

$ touch incoming/created
$ echo Testing123 >> incoming/created
$ touch /tmp/created2
$ mv /tmp/created2 incoming/

接着我们再返回第一个终端窗口,按下 CTRL + C 停止 inotifywatch 。我们将看到以下输出:

《Linux下处理隐私骚操作!》

从以上结果我们可以看出,inotifywatch 只捕获了两个事件:create 及 moved_to 。而对于其它事件,比如修改文件内容,则全部被忽略。

正是利用了 inotifywatch 的这个可以捕获事件的特性,我们可以实现当一个目录里有新文件移入的时候,将其压缩并放置到其它地方的目的。这样我们就能实现将自己的私密文件丢到那个目录,自动压缩并存放到安全位置。当然,充分利用这些特性,我们可以实现更多好玩的功能。

《Linux下处理隐私骚操作!》

3. 监测目录并执行脚本

现在,我们来一步步实现上面所提到的需求。这里我们使用到另外一个工具:inotifywait ,它的参数及使用方法与 inotifywatch 类似,当目录里创建了新文件或移入了其它位置的文件,它将执行我们所指定的脚本。

我们首先创建一个名为 processed 的目录,用来保存已经处理过的文件。

$ mkdir processed

然后,创建一个名为 watch-incoming.sh 的脚本,并添加以下内容:

#!/bin/bash
TARGET=~/incoming/
PROCESSED=~/processed/
inotifywait -m -e create -e moved_to --format "%f" $TARGET \
| while read FILENAME
do
echo Detected $FILENAME, moving and zipping
mv "$TARGET/$FILENAME" "$PROCESSED/$FILENAME"
gzip "$PROCESSED/$FILENAME"
done

这个脚本里 inotifywait 使用了 -m 选项,表示监测到指定事件时执行后续的命令。在这条命令里, inotifywait 只监测 create 和 moved_to 事件。当这两个事件发生时,文件名都会传递给 read 命令并赋值给 FILENAME 变量,然后再执行while循环下的代码块:首先将文件移动到刚刚创建的 processed 目录,然后再进行 gzip 压缩。

我们为该脚本赋予可执行权限,然后从主目录运行这个脚本。

$ chmod u+x watch-incoming.sh
$ ./watch-incoming.sh

现在打开第二个终端窗口并在 incoming 目录中创建一个新的文件。然后再列出 incoming 和 processed 目录的内容,看看操作结束之后的结果。

《Linux下处理隐私骚操作!》

脚本检测到我们在 incoming 目录下有新文件创建,将其复制到 processed 目录中,然后使用 gzip 进行压缩。

这个功能实现后,我们还可以 DIY 更多好玩的功能。例如,我们可以为图像文件添加水印,将原始视频压缩为mp4格式,批量修改文件名,等等。不怕不实现,就怕脑门不够大!

—————–

我是良许,世界500强外企 Linux 开发工程师,专业生产 Linux 干货。欢迎关注我的公众号「良许Linux」,回复「1024」获取最新最全的技术资料,回复「入群」进入高手如云技术交流群。

《Linux下处理隐私骚操作!》


推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • 本文介绍了在Ubuntu系统中清理残余配置文件和无用内容的方法,包括清理残余配置文件、清理下载缓存包、清理不再需要的包、清理无用的语言文件和清理无用的翻译内容。通过这些清理操作可以节省硬盘空间,提高系统的运行效率。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • tcpdump 4.5.1 crash 深入分析
    tcpdump 4.5.1 crash 深入分析 ... [详细]
author-avatar
财气冲天6_757
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有