
Я использую перетаскивание для копирования и перемещения файлов. Один из недостатков этого метода заключается в том, что файлы могут оказаться не в тех местах. Итак, предположим, я скопировал/переместил много файлов и папок в несколько разных мест назначения.
Как я могу отследить, где все оказалось, чтобы убедиться, что все было скопировано/перенесено в нужные места?
решение1
То, что вы просите, — это «наблюдатель за файловой системой».
я смотрю 
iWatch — это программа мониторинга файловой системы в реальном времени. Это простой скрипт perl для отслеживания изменений в определенных каталогах/файлах и немедленной отправки уведомлений по электронной почте. Он считывает список каталогов/файлов из файла конфигурации xml и нуждается в поддержке inotify в ядре (ядро Linux >= 2.6.13).
Их больше, но этот метод кажется самым простым, он встроен в Ubuntu и использует inotify (поэтому он не перегружает систему).
iWatch поставляется в двух вариантах:
- командная строка
- демон
Некоторые параметры командной строки для ведения журнала:
-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, исключая /etc/mail, и отправлять уведомления по электронной почте на адрес 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' может исключить только определенный путь.
Пример файла конфигурациипри использовании режима daemon mode. Ведение журнала осуществляется с помощью опций 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. Вы также можете использовать здесь создание исключений, если вы не хотите получать уведомления для файла или подкаталога внутри отслеживаемого каталога.