ซิงค์โฟลเดอร์ระหว่างคอมพิวเตอร์ 2 เครื่องกับตัวเฝ้าดูระบบแฟ้มเพื่อให้ทุกครั้งที่มีการแก้ไขไฟล์จะถูกจำลองแบบทันที


20

ฉันมี:

  • เซิร์ฟเวอร์ Linux ที่ฉันเชื่อมต่อผ่าน SSH บน IP 203.0.113.0 พอร์ต 1234

  • คอมพิวเตอร์ที่บ้าน (หลังเราเตอร์) IP สาธารณะ 198.51.100.17 ซึ่งเป็น Debian หรือ Windows + Cygwin

อะไรคือวิธีที่ง่ายที่สุดในการ/home/inprogress/ ซิงโครไนซ์โฟลเดอร์(ทั้งสองทิศทาง), เล็กน้อยrsyncแต่ด้วยตัวเฝ้าดูระบบไฟล์ดังนั้นทุกครั้งที่มีการแก้ไขไฟล์มันจะถูกเรพลิเคตทันที (เช่นไม่จำเป็นต้องเรียกโปรแกรมซิงค์ด้วยตนเอง)

ฉันกำลังมองหาโซลูชันบรรทัดคำสั่ง / no-GUI เนื่องจากเซิร์ฟเวอร์ไม่มีส่วนหัว

มีวิธีแก้ปัญหาในตัว Linux / Debian หรือไม่?


7
syncthingคุณจะอธิบาย
Kusalananda

มีlsyncแต่ฉันไม่รู้ว่ามันทำงานได้ดีสำหรับการซิงค์แบบสองทิศทาง
Ulrich Schwarz

lsync, csync2, inotify + rsync, แต่ฉันต้องการใช้พวกมันในการตั้งค่าเครือข่ายท้องถิ่น
Rui F Ribeiro

2
ในระดับระบบแฟ้มเสียงเช่นนี้ OCFS2 หรือแม้กระทั่ง RAID 1 มากกว่า NBD
roaima

3
การซิงค์ทางเดียวนั้นง่าย การซิงค์แบบสองทิศทางหมายถึงการแก้ไขข้อขัดแย้ง (ใช่มันจะเกิดขึ้นในบางจุด) ซึ่งจะหมายถึง UI บางประเภท (แม้ว่าจะไม่จำเป็นต้องใช้ GUI)
jcaron

คำตอบ:


23

ตามความเห็นของ @ Kusalananda ฉันใช้เวลาสองสามชั่วโมงในการทดสอบSyncthingสำหรับกรณีการใช้งานนี้และใช้งานได้ดี ตรวจจับการเปลี่ยนแปลงทั้งสองด้านโดยอัตโนมัติและการจำลองแบบรวดเร็วมาก

ตัวอย่าง: สมมติว่าคุณกำลังทำงานserver.pyในเครื่องซอฟต์แวร์ Notepad ที่คุณชื่นชอบคุณกด CTRL + S (บันทึก) ไม่กี่วินาทีต่อมาระบบจะทำการจำลองแบบอัตโนมัติบนเซิร์ฟเวอร์ระยะไกล

สิ่งหนึ่งที่ยอดเยี่ยมที่ฉันสังเกตเห็นคือคุณไม่ต้องคิดเกี่ยวกับ IP ของคอมพิวเตอร์ที่บ้านและเซิร์ฟเวอร์ด้วย Syncthing: "อุปกรณ์" (คอมพิวเตอร์เซิร์ฟเวอร์โทรศัพท์ ฯลฯ ) แต่ละตัวมี DeviceID ที่ไม่ซ้ำกันและถ้าคุณแชร์ ID กับอุปกรณ์อื่นมันจะค้นหาโดยอัตโนมัติว่าควรเชื่อมต่อซึ่งกันและกันอย่างไร

ทำ:

  • ด้านคอมพิวเตอร์ที่บ้าน (Windows หรือ Linux):

    ใช้เครื่องมือกำหนดค่าปกติของ Syncthing ในเบราว์เซอร์

  • ด้าน VPS:

    ก่อนเชื่อมต่อ VPS ด้วยการส่งต่อพอร์ต:

    ssh <user>@<VPS_IP> -L 8385:localhost:8384
    

    ตัวเลือกหลังจะเปลี่ยนเส้นทางเครื่องมือกำหนดค่าเว็บ Syncthing ของ VPS ที่พอร์ต 8384 ไปยังพอร์ตของคอมพิวเตอร์ที่บ้าน 8385

    จากนั้นเรียกใช้งานบน VPS:

    wget https://github.com/syncthing/syncthing/releases/download/v0.14.52/syncthing-linux-amd64-v0.14.52.tar.gz 
    tar xvfz syncthing-linux-amd64-v0.14.52.tar.gz
    nohup syncthing-linux-amd64-v0.14.52/syncthing &
    

    จากนั้นบนเบราว์เซอร์ของคอมพิวเตอร์ที่บ้านให้เปิดhttp: // localhost: 8385 : นี่จะเป็นการกำหนดค่า Syncthing ของ VPS!


วิธีอื่นที่ฉันลอง:

  • SSHFS ใช้บทช่วยสอนนี้ โปรดทราบว่าในบทช่วยสอนนี้พวกเขาไม่ได้ใช้sshfs-winแต่win-sshfsแทน (นี่เป็นโครงการที่แตกต่างกันสองโครงการ) ฉันลองทั้งสองอย่างแล้วและฉันไม่สามารถใช้งานได้ (อาจเป็นปัญหากับการกำหนดค่า VPS ของฉัน)

  • นี่คือข้อมูลอ้างอิงที่น่าสนใจเช่นกัน: /softwarerecs/13875/windows-sshfs-sftp-mounting-clients


ข้อดีเพิ่มเติมของ Syncthing ฉันเพิ่งสังเกตเห็น:

  • คุณสามารถลดfsWatcherDelaySเวลาconfig.xmlจาก10เป็น2วินาทีเพื่อให้หลังจากทำ CTRL + S 2 วินาทีต่อมา (+ เวลาที่จะอัปโหลดนั่นคือน้อยกว่า 1 วินาทีสำหรับไฟล์ข้อความขนาดเล็ก) มันอยู่ในคอมพิวเตอร์เครื่องอื่น

  • หากคุณซิงค์คอมพิวเตอร์สองเครื่องที่อยู่ในเครือข่ายท้องถิ่นเดียวกัน (เพียงแค่ให้ DeviceID แก่กันและกันโดยไม่จำเป็นต้องดูแลเกี่ยวกับที่อยู่ IP ในเครื่อง) มันจะสังเกตเห็นโดยอัตโนมัติว่าไม่จำเป็นต้องขนส่งผ่านอินเทอร์เน็ต แต่สามารถ จัดการในท้องถิ่น นี่เป็นสิ่งที่ยอดเยี่ยมและช่วยให้การถ่ายโอนข้อมูลความเร็วสูง (4 MB / s!) ซิงค์phone <--> computerทั้งคู่เชื่อมต่อกับเราเตอร์ในบ้านเดียวกันผ่าน WiFi ... ... ในขณะที่มันจะติดอยู่ที่ 100 KB / s บน ADSL ด้วยการซิงค์ Dropbox ! (ADSL ของฉันถูก จำกัด ที่ 100 KB / s เมื่ออัปโหลด)


@sudodus เพื่อนแนะนำให้ฉันเมื่อไม่กี่สัปดาห์ที่ผ่านมาและฉันได้ลองใช้กับคอมพิวเตอร์ <-> ซิงค์โทรศัพท์ แต่ฉันไม่คิดว่ามันจะทำงานได้ดีสำหรับเซิร์ฟเวอร์การพัฒนาเช่นกัน! แก้ไขรหัสของคุณกดปุ่มบันทึก 1 2 3 อยู่ในคอมพิวเตอร์อีกเครื่อง!
Basj

1
+1 ฉันมีปัญหาเดียวกันอยู่พักหนึ่งแล้วใช้ rsync + สคริปต์บางตัวเป็นเวลาหลายปีและในที่สุดก็ลองใช้ syncthing, csync, unison และอีกสองสามเดือนที่ผ่านมา ใช้งานได้ดีกับคอมพิวเตอร์จำนวนเท่าใดก็ได้และแม้ว่าบางเครื่องจะไม่มีการเชื่อมต่อเครือข่ายถาวร สามารถแนะนำได้ 100%
Guntram Blohm สนับสนุนโมนิกา

1
เยี่ยมมากที่คุณได้ทดสอบโซลูชันที่แตกต่างเหล่านี้ทั้งหมด @GuntramBlohm! หากคุณมีเวลาสักครู่ในการโพสต์คำตอบเพื่อให้ข้อเสนอแนะ / การเปรียบเทียบระหว่าง syncthing, rsync, csync, unison ฯลฯ ข้อดี / ข้อเสียของแต่ละข้อมันน่าสนใจมากสำหรับการอ้างอิงในอนาคต!
Basj

16

เสียงเหมือนพร้อมเพรียงควรทำงาน

Unison เป็นเครื่องมือซิงโครไนซ์ไฟล์สำหรับ OSX, Unix และ Windows อนุญาตให้เก็บแบบจำลองสองชุดของไฟล์และไดเรกทอรีที่จะจัดเก็บในโฮสต์ที่แตกต่างกัน (หรือดิสก์ที่แตกต่างกันในโฮสต์เดียวกัน), แก้ไขแยกต่างหากและนำมาถึงวันที่โดยการเผยแพร่การเปลี่ยนแปลงในแต่ละแบบจำลองอื่น ๆ

มันมีตัวเลือก GUI ที่สามารถแก้ไขข้อขัดแย้งได้ง่ายขึ้น แต่ทุกอย่างสามารถทำได้โดยใช้ส่วนต่อประสานข้อความกับผู้ใช้ นอกจากนี้คุณยังสามารถกำหนดวิธีการแก้ไขข้อขัดแย้งสำหรับการดำเนินการแบบอัตโนมัติ

มีส่วนประกอบของตัวตรวจสอบไฟล์ (fsmonitor) เพื่อเรียกการซิงค์เมื่อจำเป็น ค้นหา "นาฬิกาซ้ำ" ในคู่มือเพื่อดูรายละเอียด

ดูเหมือนว่าเดมีรุ่นที่เหมาะสม (2.48+) แพคเกจออกมาจากกล่อง


ขอบคุณ! ตัวตรวจสอบไฟล์ fsmonitor รวมอยู่ในกล่องด้วย Unison หรือไม่หรือเราต้องติดตั้งเครื่องมือนี้และเชื่อมต่อกับ Unison ด้วยตนเองหรือไม่?
Basj

1
@Basj มันรวมอยู่ในรุ่นที่เพียงพอล่าสุดและเป็นเรื่องง่ายมากที่จะตั้งค่า ฉันได้เพิ่มลิงก์ไปยังคู่มือ
TooTea

ฉันเคยใช้มันในอดีตใน Mac เครื่องเก่า มันใช้งานได้กับความยุ่งยากน้อยที่สุด ไม่รู้ว่ามันเหมาะกับสถานการณ์เซิร์ฟเวอร์หรือไม่
Rui F Ribeiro
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.