rsync:轮询新文件

发布于 2024-09-15 20:08:33 字数 166 浏览 7 评论 0原文

我有:

<代码> $ rsync -azv zope@myserver:/smb/Data/*/*/* ~/rsynced_samples/

我希望它永远运行,一旦任何新文件出现在我的服务器上就同步它:(

指定轮询间隔,例如 4 秒是一个不错的组合)

I've got:


$ rsync -azv zope@myserver:/smb/Data/*/*/* ~/rsynced_samples/

And I want it to run forever, syncing any new file as soon as it appears on myserver:

(specifying a poll interval, such as 4 seconds would be an ok comprise)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小嗷兮 2024-09-22 20:08:33

您可以使用 inotifywait 来代替 rsync,它使用内核特定的文件更改触发器。

这个脚本(inotify.sh)可以给你一个想法:

#!/bin/bash

directory=$1

inotifywait -q -m --format '%f' -e modify -e move -e create -e delete ${directory} | while read line

do
    echo "doing something with: $line";

    # for example:
    # cp $line to <somewhere>

你可以调用这个脚本指定“monitor”目录,这样

./inotify.sh ~/Desktop/

$line 变量就包含了完整的文件路径。

如果您想限制为仅新创建的文件,您可以在标志“-e create”上使用

Instead of rsync you can use inotifywait which use kernel specific file changes triggers.

This script (inotify.sh) can you give an idea:

#!/bin/bash

directory=$1

inotifywait -q -m --format '%f' -e modify -e move -e create -e delete ${directory} | while read line

do
    echo "doing something with: $line";

    # for example:
    # cp $line to <somewhere>

You can invoke this script specifying the "monitor" directory, in this way

./inotify.sh ~/Desktop/

The $line variable contains the full file path.

If you want to limit to only newly created files you can use on the flag "-e create"

软糖 2024-09-22 20:08:33

使用 cron 根据您的时间间隔设置检查(例如,也许每分钟?)。此链接应该有所帮助: http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/

请注意,设置了 cron 选项卡在你的机器端,而不是在你的 bash 脚本中

也有用: http://benr75.com/pages/using_crontab_mac_os_x_unix_linux

这里是一个代码示例:

1) crontab -e // 这会打开当前的 crontab,如果不存在则创建一个
2)输入:*** * * * file.sh>> log.txt // 这会将文件的输出通过管道传输到日志文件并每分钟运行一次。

希望有帮助

Use cron to set up a check based on your time interval (say, every minute, perhaps?) . This link should help: http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/

Note that a cron tab is set up on your machine side, not in your bash script

also useful: http://benr75.com/pages/using_crontab_mac_os_x_unix_linux

and here is a code example:

1) crontab -e // this opens up your current crontab or creates one if it does not exist
2) enter: * * * * * file.sh >> log.txt // this would pipe the output of your file to a log file and run it every minute.

hope that helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文