Unison
Ubuntu Unison:過濾除多個文件之外的所有內容
我想同步兩台相似的電腦,只更新幾個文件。因此,我想執行 Unison 並忽略除不同路徑中的文件列表之外的所有內容。
就像是:
# /usr/bin/unison-gtk /home/ ssh://root@192.168.0.199:22//home/ -ignore "Name *" -ignorenot "Name {config/text.cfg, Pictures/test.jpg, Desktop/test.mp3"
或者從根目錄開始更好:
# /usr/bin/unison-gtk / ssh://root@192.168.0.199:22// -ignore "Name *" -ignorenot "Name {/home/config/text.cfg, /home/Pictures/test.jpg, /usr/local/bin/test.sh"
第一個忽略是排除其他所有內容,因此 ignorenot 不會擷取它們。有什麼幫助嗎?任何人都可以幫忙嗎?我沒有發現任何東西對我有幫助。
您是否嘗試過
-path
使用一致的選項而不是-ignore
?來自Unison手冊和參考指南部分Using Unison for All Your Files告訴 Unison 在任何給定的執行中只同步其中的一些文件和子目錄。這可以通過在命令行上使用 -path 開關來完成: … -path 選項可以根據需要多次使用,以同步多個文件或子目錄:
這是一個快速的實際範例。
- 創建
local
和remote
目錄(remote
在這種情況下,目錄是實際遠端目錄的替代)。root@ubuntu:~# mkdir local remote
- 在目錄中創建 9 個文件
local
。root@ubuntu:~# for i in $(seq 9); do uuidgen > local/${i}.txt ; done root@ubuntu:~# ls local 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
- 用於
unison
同步文件,但將同步限制為名為1.txt
、2.txt
和的文件3.txt
。root@ubuntu:~# unison -auto -batch local/ remote/ -path 1.txt -path 2.txt -path 3.txt Contacting server... Looking for changes ... Reconciling changes file ----> 1.txt file ----> 2.txt file ----> 3.txt ...
- 確認
remote
目錄只包含那些文件。root@ubuntu:~# ls remote/ 1.txt 2.txt 3.txt
當內容髮生變化時,事情會變得更有趣。
- 在目錄中創建相同的文件
remote
。這將更新同步的文件並為未同步的文件創建新文件。root@ubuntu:~# for i in $(seq 9); do uuidgen > remote/${i}.txt ; done
- 用於
unison
再次同步目錄root@ubuntu:~# unison -auto -batch local/ remote/ -path 1.txt -path 2.txt -path 3.txt Contacting server... Looking for changes Reconciling changes <---- changed 1.txt <---- changed 2.txt <---- changed 3.txt ...
- 同步的文件(例如
1.txt
)內容將在兩個目錄中匹配。未同步的文件(例如9.txt
)內容會有所不同。root@ubuntu:~# cat {local,remote}/1.txt 7317d9ef-9747-43ae-9f4c-347fc4134e65 7317d9ef-9747-43ae-9f4c-347fc4134e65 root@ubuntu:~# cat {local,remote}/9.txt 76654fcf-d0b2-4788-8a84-b765c9a41cc3 f5db8eb3-4300-463a-9d49-fcb14afcae12