C中的远程同步目录

时间:2012-11-04 07:44:28

标签: c linux

我没有C经验,但是......

如果我想在C语言中编写一个用于Linux系统的程序,它将本地文件/目录同步到远程文件/目录,当本地文件/目录更新时,自动 ;我应该看看哪些图书馆或内置插件?

到目前为止,我查看了inotify,但是如果没有一些帮助,我确实缺乏搜索这个术语的术语。

修改

这只是一个练习。

2 个答案:

答案 0 :(得分:2)

librsync,一个实现rsync算法的库。但你真的需要在C中这样做吗?一种更常见,更简单的方法是使用shellscripts和rsync程序。

答案 1 :(得分:2)

inotify是要走的路。当你遇到困难时,奋斗回来并在这里提出更具体的问题。

这是一个让你入门的例子(请原谅C ++输出语句,改为想象printf):

void waitfor_activity(const char *path)
{
        const int fd = inotify_init();
        const int wd = inotify_add_watch(fd, path, IN_MODIFY | IN_CLOSE_WRITE);

        char buffer[EVENT_BUF_LEN];
        while (true)
        {
                const ssize_t length = read(fd, buffer, EVENT_BUF_LEN); 
                if (length < 0) {
                        perror("read");
                }  
                const struct inotify_event *event = ( struct inotify_event * ) buffer;
                std::cout << "event: ";
                if (event->mask & IN_CLOSE_WRITE)
                {
                        std::cout << "IN_CLOSE_WRITE ";
                }
                if (event->mask & IN_MODIFY)
                {
                        std::cout << "IN_MODIFY ";
                }
                std::cout << std::endl;
        }
        close(fd);
}