我想在特定文件或目录更改时运行shell脚本.

我怎么能轻易做到?

推荐答案

使用inotify-tools.

链接的Github页面有很多例子;这是其中之一.

#!/bin/sh

cwd=$(pwd)

inotifywait -mr \
  --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' \
  -e close_write /tmp/test |
while read -r date time dir file; do
       changed_abs=${dir}${file}
       changed_rel=${changed_abs#"$cwd"/}

       rsync --progress --relative -vrae 'ssh -p 22' "$changed_rel" \
           usernam@example.com:/backup/root/dir && \
       echo "At ${time} on ${date}, file $changed_abs was backed up via rsync" >&2
done

Linux相关问答推荐

与mmap和munmap相比,保留一个巨大内存文件(约400 MB)的mmap多次的性能成本

Bash脚本用于在远程工作后关闭用户会话

通过shell 脚本基于AM/PM对日期时间字段进行排序

如何调试tokio任务挂起的位置?

条件句if的正确写法是怎样的?

如何在Linux下使用正则表达式更改文件名

如何使用 sed 和 date 命令替换和格式化字符串中的日期?

在 Rust 中重命名主线程

如何在 gcc 搜索路径上防止多个版本的 Boost?

使用 AWK 过滤 Linux 输出

使用 sed 命令仅打印正则表达式匹配

有什么方法可以知道在发送之前将在 TCP 上发送多少字节?

用于判断 shell 脚本是否正在运行的 Linux 命令

使用 rc.local 运行脚本:脚本有效,但在启动时无效

你如何在 C 中的 Linux 上进行非阻塞控制台 I/O?

如何从任意 pthread_t 获取线程 ID?

如何在 Linux 上取消关机?

*nix 系统上是否有与 COM 等效的功能?如果不是,那么 *nix 的可重用性方法是什么?

如何在shell的递归目录中列出特定类型的文件?

计算每个进程打开的文件