linux双向同步两个本地文件夹

参考(膜大佬):https://blog.csdn.net/qq_26702065/article/details/52175560

思路

  • 用inotify监控文件夹,如果文件夹内有文件变化则输出变化情况
  • 每当inotify检测到文件变化时,就调用unison,把当前文件夹的变化发给另一个文件夹
  • 创建两个进程分别进行单向同步,从而变成了双向同步。

安装必要程序:

sudo apt install -y inotify-tools unison

单向同步

把下面的代码保存为syncto.sh

#/bin/bash

# $1: from
# $2: to
unison -batch $1 $2
inotifywait -mrq -e create,delete,modify,move $1 | while read line; do
        unison -batch $1 $2
done
  • inotifywait
    m: (monitor)一直监控
    r: (recursive)递归监测目录
    q: (quite)打印最少(只打印事件)
    e: (event)只监测后面的特定事件
  • unison
    batch: 不问任何问题

双向同步

保存为syncboth.sh

nohup syncto.sh $1 $2 &
nohup syncto.sh $2 $1 &

然后

bash syncboth.sh dir1/ dir2/

其中dir1和dir2必须是绝对路径。

这样即可同步两个文件夹了(前提是两个文件夹没有冲突的部分。建议先手动同步一下两个文件夹,否则容易出问题)

posted @ 2024-09-28 13:38  寻找繁星  阅读(79)  评论(0编辑  收藏  举报