我看

我看

我使用拖放来复制和移动文件。这样做的一个缺点是文件可能会被放到错误的地方。因此,假设我将许多文件和文件夹复制/移动到多个不同的目的地。

我如何才能追踪所有内容的最终位置,以确保所有内容都被复制/移动到正确的位置?

答案1

您所要求的是“文件系统观察器”。

我看 安装 iWatch

iWatch 是一个实时文件系统监控程序。它是一个简单的 perl 脚本,用于监控特定目录/文件中的更改并立即发送电子邮件通知。它从 xml 配置文件中读取目录/文件列表,并且需要内核中的 inotify 支持(Linux 内核 >= 2.6.13)。

还有更多,但这似乎是最简单的方法,是 Ubuntu 原生的方法,使用 inotify(因此它不会占用系统)。

iWatch 有两种方式:

  1. 命令行
  2. 守护进程

一些用于日志记录的命令行选项:

-m <email address>
   Specify the contact point's email address. Without this option, iwatch will 
   not send any email notification. 

-s <on|off>
   Enable or disable reports to the syslog (default is off/disabled)

一些命令行示例

iwatch /tmp

使用默认事件监视 /tmp 目录中的变化

iwatch -r -e access,create -m cahya@localhost -x /etc/mail /etc

仅监控访问并以 /etc/mail 为例外递归方式在 /etc 目录中创建事件,并向 cahya@localhost 发送电子邮件通知。

iwatch -r -c "(w;ps -ef)|mail -s '%f was changed' cahya@localhost" /bin

递归监视/bin 目录并执行命令。

iwatch -r -X '\.svn' ~/projects

递归监视 ~/projects 目录,但排除其中的任何 .svn 目录。这不能通过常规的“-x”选项完成,因为“-x”只能排除定义的路径。


示例配置文件使用守护进程模式时。日志记录通过配置文件中的 XML 选项完成:

<config>
  <guard email="myadmin@localhost" name="IWatch"></guard>
  <watchlist>
  <title>Public Website</title>
  <contactpoint email="webmaster@localhost" name="Web Master"/>
    <path type="single">/var/www/localhost/htdocs</path>
    <path type="single" syslog="on">/var/www/localhost/htdocs/About</path>
    <path type="recursive">/var/www/localhost/htdocs/Photos</path>
  </watchlist>
  <watchlist>
  <title>Operating System</title>
  <contactpoint email="admin@localhost" name="Administrator"/>
    <path type="recursive">/etc/apache2</path>
    <path type="single">/etc/passwd</path>
    <path type="recursive">/etc/mail</path>
    <path type="exception">/etc/mail/statistics</path>
    <path type="single" filter="shadow|passwd">/etc</path>
  </watchlist>
  <watchlist>
  <title>Only Test</title>
  <contactpoint email="root@localhost" name="Administrator"/>
    <path type="single" alert="off" exec="(w;ps -ef)|mail -s %f
      root@localhost">/tmp/dir1</path>
    <path type="single" events="access,close" alert="off" exec="(w;ps -ef)|mail -s %f
      root@localhost">/tmp/dir2</path>
    <path type="single" events="default,access" alert="off" exec="(w;ps -ef)|mail -s '%f is
      accessed' root@localhost">/tmp/dir3</path>
    <path type="single" events="all_events" alert="off">/tmp/dir4</path>
  </watchlist>
</config>

使用此配置,iwatch 将监视单个目录/var/www/localhost/htdocs(不包括其子目录),并且任何通知都将发送到联系点 webmaster@localhost。但它将监视整个目录树/etc/apache2,包括在 IWatch 启动后稍后创建的任何子目录。如果您不想收到受监视目录中的文件或子目录的通知,也可以在此处创建例外。

相关内容