unison与fswatch文件同步
生活随笔
收集整理的這篇文章主要介紹了
unison与fswatch文件同步
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
@[TOC]unison與fswatch文件同步
簡介
官網: https://www.cis.upenn.edu/~bcpierce/unison/
Unison 是雙向同步的,一個缺點是,對于一個文件在兩個同步文件夾中都被修改時,unison是不會去同步的,因為unison無法判斷以那個為準.
安裝
mac 系統安裝
brew install unisoncentos debian 等系統
apt-get -y install unisonwindows 系統
官方下載軟件 https://github.com/bcpierce00/unison/releases
安裝后配置環境變量
使用
"unison.exe" unison -version文件同步
命令同步
- -batch 全自動模式,接受缺省動作,并執行。
- /data 本地目錄
- ssh://root@127.0.0.1:2222//data 服務器端目錄,注意服務器地址后面是"雙斜線"
配置文件同步
注意事項
配置文件一定是在 unison 指定的配置目錄,每個系統路徑不同,
unison [隨便文件名] 會報錯,但是也會提示具體的配置文件目錄
即看到命配置文件為 /Users/modongxiao/Library/Application Support/Unison/aaaaaa.prf
bogon:~ modongxiao$ unison aaaaaa Usage: unison [options]or unison root1 root2 [options]or unison profilename [options]For a list of options, type "unison -help". For a tutorial on basic usage, type "unison -doc tutorial". For other documentation, type "unison -doc topics". To start interactive profile selection, type "unison -i".Profile /Users/modongxiao/Library/Application Support/Unison/aaaaaa.prf does not exist配置文件 data.prf
# 要同步的文件夾 root = /data #要同步的文件夾 root = ssh://root@127.0.0.1:2222//data # 全自動模式,接受并執行默認動作 batch = true #同步時最大線程數 maxthreads = 3000 #間隔一秒后,開始新一次同步檢查 repeat = 2 #重試次數 retry = 1 #使用ssh壓縮傳輸方式 sshargs = -C運行
unison data bogon:docker modongxiao$ unison data Unison 2.51.4 (ocaml 4.12.0): Contacting server... Connected [//4554e2191dd9//data -> //bogon//Users/modongxiao/data] Looking for changesWaiting for changes from server Reconciling changes new file <-?-> new file .DS_Store local : new file modified on 2021-12-17 at 20:56:53 size 6148 rw-r--r-- No updates to propagate Synchronization complete at 21:38:39 (0 items transferred, 18 skipped, 0 failed)skipped: .DS_Store (contents changed on both sides)skipped: app/.DS_Store (contents changed on both sides)skipped: app/learnapi/.DS_Store (contents changed on both sides)Sleeping for 2 seconds...出現 skipped 就是沖突的文件
同步文件沖 突skipped 以本地文件為主同步
- -force=/data 以本地文件為主
fswatch 監控文件變化
簡介
fswatch 一個文件修改監視器,當指定的文件或者文件夾被修改的時候會受到通知。
安裝
# mac 系統 brew install fswatch # debian 等系統 apt-get install fswatch # centos 等系統 yum -y install fswatch使用
- -1, --one-event 事件觸發一次后就退出。 (-o)
- -l 1 延遲1秒執行
腳本同步文件,如果有沖突則以本地為主再次同步
#/bin/bash# log目錄 LOG_DIR="/tmp/unison.log" # 本機目錄 LOCAL_DIR="/data" # 遠程地址 DIST_DIR="ssh://root@127.0.0.1:2222//data"# 初始同步 以本地目錄為主同步 unison -force=${LOCAL_DIR} -batch ${LOCAL_DIR} ${DIST_DIR}fswatch ${LOCAL_DIR} -o | while read file; do# 清空log文件echo '' >$LOG_DIR# 文件同步unison -batch ${LOCAL_DIR} ${DIST_DIR} -silent -logfile ${LOG_DIR}# 打印日志cat $LOG_DIR# 判斷是否有沖突文件 cat 文件 | 匹配最后一行 | 去除前面開始的空格 | 匹配以skipped開頭cat /mvc/unison.log | awk 'END {print}' | awk '{sub("^ *","");sub(" *$","");print}' | grep "^skipped"# 匹配成功if [ $? == 0 ]; thenunison -force=${LOCAL_DIR} -batch ${LOCAL_DIR} ${DIST_DIR}echo "文件沖突,以本地文件為主";fi done# 可以監控多個文件變化 # fswatch /data /mvc | while read file# -l 1 延遲1秒 #fswatch /data -o -l 1 | while read file總結
以上是生活随笔為你收集整理的unison与fswatch文件同步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大学计算机基础教程第12章软件技术基础
- 下一篇: 高职高考数学可以用计算机吗,将高职高考数