跨主機(jī)容器共享數(shù)據(jù)卷(webdav 雙向同步)

在校內(nèi)搭建的 Git 倉(cāng)庫(kù),有時(shí)候需要在校外訪問操作创葡。因?yàn)槭褂玫氖?Gogs 搭建浙踢,所以只需要同步 data 文件夾即可,網(wǎng)上關(guān)于雙向同步的方案有很多灿渴,但是都很麻煩洛波,而且經(jīng)常會(huì)“打架”,文件沖突骚露。

所以本文使用一些比較奇葩的辦法解決這個(gè)問題蹬挤,那就是使用 webdav 傳輸,因?yàn)槲译娔X本地裝有 Nextcloud 的客戶端棘幸,服務(wù)器裝有 Nextcloud 的服務(wù)端焰扳,而服務(wù)端自帶 Webdav 接口,所以我只需要把 Gogs 容器的數(shù)據(jù)卷掛載到本地 Nextcloud 同步文件夾中误续,Nextcloud就會(huì)上傳到服務(wù)器吨悍。

而服務(wù)器使用 davfs 掛載一個(gè) webdav 文件夾用于掛載服務(wù)器上的 Gogs 容器數(shù)據(jù)卷,這樣兩個(gè)跨主機(jī) Gogs 容器就共享一個(gè)數(shù)據(jù)卷了女嘲。

這種辦法的好處就是把文件沖突交給 Nextcloud 處理畜份,這種私人云存儲(chǔ)在處理文件沖突時(shí)還是很有一套的,最重要的是不會(huì)陷入“掐架”或者“死循環(huán)”中欣尼。

關(guān)于 Docker 數(shù)據(jù)卷跨主機(jī)共享其實(shí)有專門的插件可以實(shí)現(xiàn),例如:Flocker停蕉,但是本文不想折騰得太復(fù)雜愕鼓,盡量用現(xiàn)成的服務(wù)實(shí)現(xiàn),所以選擇 Webdav 雙向同步傳輸慧起。

  • 本地:一個(gè) Nextcloud 客戶端菇晃,一個(gè) Gogs 容器,數(shù)據(jù)卷掛載到 Nextcloud 客戶端的同步文件夾中蚓挤。
  • 服務(wù)器:一個(gè) Nextcloud 容器磺送,一個(gè) Gogs 容器驻子,Gogs 數(shù)據(jù)卷使用 davfs2 通過 webdav 服務(wù)連接到 Nextcloud。

之所以不使用直接掛載 Nextcloud 容器的數(shù)據(jù)卷是因?yàn)?Nextcloud 上傳文件時(shí)需要在 Mysql 中記錄歷史記錄估灿,直接掛載 Gogs 數(shù)據(jù)卷到 Nextcloud 數(shù)據(jù)卷中會(huì)破壞 Nextcloud 的結(jié)構(gòu)崇呵,不能形成雙向同步。

安裝 davfs2

sudo apt install davfs2

配置 davfs2

注意馅袁,下面操作是完全在 root 用戶下進(jìn)行的域慷,如果你不是 root 用戶,需要把當(dāng)前用戶加入到 davfs2 的用戶組汗销。例如:sudo usermod -aG davfs2 你的用戶名

接下來配置 davfs2:

mkdir ~/.davfs2/
cp /etc/davfs2/secrets ~/.davfs2/secrets
chmod 0600 ~/.davfs2/secrets

修改 ~/.davfs2/secrets 文件:

vim ~/.davfs2/secrets

在最后一行添加 webdav 地址和賬號(hào)密碼:

https://cloud.example.com/remote.php/webdav/ username password

掛載 webdav 文件夾

上面配置了 davfs2 之后犹褒,我們還要修改 /etc/fstab 這個(gè)文件。

https://cloud.example.com/remote.php/webdav/ /your/local/path davfs user,noauto,uid=username,file_mode=600,dir_mode=700 0 1

在該文件最后一行添加上面的一句弛针,注意修改網(wǎng)址以及掛載 webdav 的路徑叠骑。

注意要先創(chuàng)建 /your/local/path 這個(gè)路徑,確保文件夾存在削茁。

啟動(dòng) Gogs 容器

本地和服務(wù)器啟動(dòng)一個(gè) Gogs宙枷,使用同一份 Compose 即可。

version: '2'
services:
  gogs:
    container_name: gogs
    image: gogs/gogs
    volumes:
      - ./:/data
    ports:
      - "3000:3000"
      - "3022:22"
    restart: always
networks:
  default:
    external:
      name: nginx

接下來兩個(gè)容器會(huì)通過 webdav 實(shí)現(xiàn)數(shù)據(jù)共享付材。

需要提醒的是 Nextcloud 的客戶端并非是“實(shí)時(shí)同步”(大概延遲 30 秒)朦拖,如果你很在乎“即時(shí)同步”,可以在本地也安裝 davfs2厌衔,然后本地掛載 webdav 文件夾璧帝,但是不建議在有認(rèn)證的網(wǎng)絡(luò)中使用這個(gè)辦法,這會(huì)導(dǎo)致你開不了機(jī)富寿,因?yàn)殚_機(jī)時(shí)會(huì)卡在 /etc/fstab 那里睬隶,畢竟無法聯(lián)網(wǎng),也就無法掛載页徐。

最后說一下這種辦法的一個(gè)很大的弊端苏潜,就是 umount 操作時(shí)要等一段時(shí)間:

waiting while mount.davfs (pid 31325) synchronizes the cache

如果經(jīng)常有 umount 操作就不要使用這種辦法了”溆拢總而言之給我感覺并不是很好恤左,期待路過的大神給個(gè)方案,不要 rsync 之類的工具搀绣,根本不能解決沖突飞袋。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市链患,隨后出現(xiàn)的幾起案子巧鸭,更是在濱河造成了極大的恐慌,老刑警劉巖麻捻,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纲仍,死亡現(xiàn)場(chǎng)離奇詭異呀袱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)郑叠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門夜赵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人锻拘,你說我怎么就攤上這事油吭。” “怎么了署拟?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵婉宰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我推穷,道長(zhǎng)心包,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任馒铃,我火速辦了婚禮蟹腾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘区宇。我一直安慰自己娃殖,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布议谷。 她就那樣靜靜地躺著炉爆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪卧晓。 梳的紋絲不亂的頭發(fā)上芬首,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音逼裆,去河邊找鬼郁稍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛胜宇,可吹牛的內(nèi)容都是我干的耀怜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼桐愉,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼封寞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起仅财,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎碗淌,沒想到半個(gè)月后盏求,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抖锥,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年碎罚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了磅废。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡荆烈,死狀恐怖拯勉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情憔购,我是刑警寧澤宫峦,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站玫鸟,受9級(jí)特大地震影響导绷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜屎飘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一妥曲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钦购,春花似錦檐盟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至怨规,卻和暖如春陌宿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背波丰。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工壳坪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人掰烟。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓爽蝴,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親纫骑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蝎亚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)先馆,斷路器发框,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,144評(píng)論 25 707
  • 0x01 核心概念 Docker鏡像類似于虛擬機(jī)鏡像,可以理解為一個(gè)面向Docker引擎的只讀模板煤墙,包含了文件系統(tǒng)...
    閑云逸心閱讀 4,719評(píng)論 0 9
  • 她告訴他:“我每天放學(xué)回家的小路很黑”本來她以為他會(huì)安慰她說:“小心點(diǎn)兒梅惯。要不我送你吧”但他說:“那你不走那條...
    朱海玉y閱讀 139評(píng)論 0 1
  • 自從決定堅(jiān)持三十天的日更以來铣减,發(fā)現(xiàn)最大的困惑不在于每天堅(jiān)持寫她君,而在于每天堅(jiān)持寫什么?葫哗!特別在我開寫沒幾天缔刹,突...
    伍月端午閱讀 328評(píng)論 1 1