我是这样处理我的隐私的

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

每个人都有自己的隐私

尤其是数字信息时代更是如此

小到自己写下的情书

大到公司商业机密

抑或是偷偷下载的日本XXX.avi

微信图片_20220413182447.jpg

这些隐私

放桌面——找死

放某个隐秘目录——麻烦

放垃圾筒……谁会这么干

真想有个工具

自动帮我压缩

自动帮我放到安全位置

微信图片_20220413182447.jpg

嗯……

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

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 才会退出。命令运行之后终端将会打印以下信息:

微信图片_20220413182452.jpg

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

$cd incoming/

$ touch newfile

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

微信图片_20220413182455.jpg

在结果信息里,我们可以看到 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 。我们将看到以下输出:

微信图片_20220413182459.jpg

从以上结果我们可以看出,inotifywatch 只捕获了两个事件:create 及 moved_to 。而对于其它事件,比如修改文件内容,则全部被忽略。正是利用了 inotifywatch 的这个可以捕获事件的特性,我们可以实现当一个目录里有新文件移入的时候,将其压缩并放置到其它地方的目的。这样我们就能实现将自己的私密文件丢到那个目录,自动压缩并存放到安全位置。当然,充分利用这些特性,我们可以实现更多好玩的功能。微信图片_20220413182503.png

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 \

   | whileread 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 目录的内容,看看操作结束之后的结果。

微信图片_20220413182508.jpg

脚本检测到我们在 incoming 目录下有新文件创建,将其复制到 processed 目录中,然后使用 gzip 进行压缩。这个功能实现后,我们还可以 DIY 更多好玩的功能。例如,我们可以为图像文件添加水印,将原始视频压缩为mp4格式,批量修改文件名,等等。不怕不实现,就怕脑门不够大!

目录
相关文章
|
数据可视化 算法 数据挖掘
基于python的笔记本电脑购买意愿影响因素分析,包括情感分析和聚类分析
本文通过Python大数据技术对笔记本电脑评论数据进行情感分析和聚类分析,揭示了产品性能、外观设计和用户地区等因素对购买意愿的重要影响,并为企业提供了优化产品设计和销售策略的参考。
343 2
|
5月前
|
人工智能 测试技术 定位技术
WorldScore:斯坦福开源世界生成模型评估新标杆:3000样本+九维指标,视频/4D/3D模型一网打尽
WorldScore是斯坦福大学提出的首个统一评估世界生成模型的基准测试,通过基于相机轨迹的布局规范和3000个多样化样本,全面评测生成内容的可控性、质量与动态性。
351 46
WorldScore:斯坦福开源世界生成模型评估新标杆:3000样本+九维指标,视频/4D/3D模型一网打尽
|
数据采集 机器学习/深度学习 算法
【优秀设计案例】基于K-Means聚类算法的球员数据聚类分析设计与实现
本文通过K-Means聚类算法对NBA球员数据进行聚类分析,旨在揭示球员间的相似性和差异性,为球队管理、战术决策和球员评估提供数据支持,并通过特征工程和结果可视化深入理解球员表现和潜力。
504 1
【优秀设计案例】基于K-Means聚类算法的球员数据聚类分析设计与实现
|
6月前
|
自然语言处理 安全 API
1688 跨境属性 API 接口(1688API 系列)
1688跨境属性API助力跨境电商发展,提供商品目标市场适配、跨境物流、国际认证及语言文化属性等数据,支持HTTP GET/POST请求。开发者可通过商品ID、目标市场代码和语言参数精准获取信息,提升业务效率与精准度。示例代码展示了如何使用Python进行GET请求,获取商品跨境属性,确保数据准确可靠。
|
SQL Oracle 算法
|
11月前
|
机器学习/深度学习 人工智能 5G
探索5G革命中的虚拟化基站(vRAN):定义、功能与前景
探索5G革命中的虚拟化基站(vRAN):定义、功能与前景
525 5
|
12月前
|
存储 安全 数据安全/隐私保护
CRISPR技术:基因编辑的伦理与应用
【9月更文挑战第27天】CRISPR/Cas9基因编辑技术以其高精度和效率革新了生命科学,应用于基因功能研究、遗传病治疗及作物改良,同时引发伦理争议。本文探讨其原理、人类胚胎编辑的伦理议题、个人基因隐私保护及生态影响,并展望其在医学、农业和科研领域的潜力。
|
11月前
|
SQL
创建分组总计查询的SQL技巧与方法
在SQL中,创建分组总计查询(也称为聚合查询)是一项非常基础且重要的技能
|
Rust 安全 C++
系统编程的未来之战:Rust能否撼动C++的王座?
【8月更文挑战第31天】Rust与C++:现代系统编程的新选择。C++长期主导系统编程,但内存安全问题频发。Rust以安全性为核心,通过所有权和生命周期概念避免内存泄漏和野指针等问题。Rust在编译时确保内存安全,简化并发编程,其生态系统虽不及C++成熟,但发展迅速,为现代系统编程提供了新选择。未来有望看到更多Rust驱动的系统级应用。
245 1