rsync-3.1.1 ไม่ได้ซิงค์กับ rsync-3.1.3


1

ฉันเพิ่งอัพเกรดเป็น Rtools-3.5 (ขึ้นอยู่กับคำถามนี้) ซึ่งรวมถึง rsync-3.1.3 บนแล็ปท็อปเครื่องอื่นที่ใช้ Rtools-3.4 (rsync-3.1.1) คำสั่งง่ายๆ rsync -aHAX remote:/path/to/dir/* . ทำงานได้ดี แต่ด้วย 3.1.3 มันไม่ทำงาน ในการแก้ไขปัญหาฉันได้คัดลอกไฟล์ปฏิบัติการ rsync-3.1.1 (มาพร้อมกับอุปกรณ์เสริม cyg*.dll ) จาก Rtools-3.4 ดังนั้นตอนนี้ฉันมีชุดปฏิบัติการสองชุด: 3.1.1 (เก่า, ทำงาน) และ 3.1.3 (ใหม่, ไม่ทำงาน) เวอร์ชั่น 3.1.1 ใช้งานได้

ssh การกำหนดค่าเหมือนกัน ssh-agent ทำงานได้ดี (ผ่าน KeePass / KeeAgent) และ ssh -ing (จาก Git สำหรับ Windows รุ่น OpenSSH_7.7p1, OpenSSL 1.0.2o 27 Mar 2018 หากมีความสำคัญ) กับเซิร์ฟเวอร์ระยะไกลทำงานได้โดยไม่มีปัญหา

ฉันคิดคำถามอื่น " https://unix.stackexchange.com/questions/389908 "จะคล้ายกันมากพอ แต่ในคำถามนั้น rsync ทุกเวอร์ชันเหมือนกัน

รุ่นเก่ากว่า:

$ ~/rs/rsync --version
rsync  version 3.0.9  protocol version 30
Copyright (C) 1996-2011 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 32-bit timestamps, 64-bit long ints,
    no socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes

รุ่นที่ใหม่กว่า:

$ /c/Rtools/bin/rsync --version
rsync  version 3.1.3  protocol version 31
Copyright (C) 1996-2018 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 32-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, no xattrs, iconv, symtimes, prealloc

ฉันลอง rsync -e 'ssh -vv' ... และดูเหมือนว่าไม่มีอะไรน่าสนใจ: บันทึกรายงานว่าไม่มีปัญหากุญแจได้รับการยอมรับและลงท้ายด้วย:

debug2: input_userauth_pk_ok: fp SHA256:g2VNSDTf5fNp46rZUo4GmAVi84gSNA9nNbT9KKfGXP0
debug1: Enabling compression at level 6.
debug1: Authentication succeeded (publickey).
Authenticated to my.remote.host ([11.22.33.44]:22).
dup() in/out/err failed
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.3]

คำสั่งเดียวกันกับ 3.1.1 ทำงานได้ดี ข้อผิดพลาดนั้นมักบ่งบอกว่าไม่มีไฟล์ dir / ระยะไกลอยู่ แต่นั่นไม่ใช่กรณีที่เห็นได้ชัด

ปรากฏว่า Rtools มีการเปลี่ยนแปลงตัวเลือกการรวบรวมเนื่องจากการเปรียบเทียบความสามารถของทั้งสองนั้นแสดงให้เห็นถึงความแตกต่าง:

## Versions:       3.1.1                          3.1.3
$ diff -uw <( ~/rs/rsync --help) <( /c/Rtools/bin/rsync --help) | head -n 20
--- /dev/fd/63  2018-08-12 17:48:25.000000000 -0700
+++ /dev/fd/62  2018-08-12 17:48:25.000000000 -0700
@@ -1,10 +1,10 @@
-rsync  version 3.0.9  protocol version 30
-Copyright (C) 1996-2011 by Andrew Tridgell, Wayne Davison, and others.
+rsync  version 3.1.3  protocol version 31
+Copyright (C) 1996-2018 by Andrew Tridgell, Wayne Davison, and others.
 Web site: http://rsync.samba.org/
 Capabilities:
     64-bit files, 64-bit inums, 32-bit timestamps, 64-bit long ints,
-    no socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
-    append, ACLs, xattrs, iconv, symtimes
+    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
+    append, ACLs, no xattrs, iconv, symtimes, prealloc

ดังนั้นพวกเขาได้เพิ่ม socketpairs และลบออก xattrs. หน้าอื่น ๆ ที่ฉันได้อ่านทำให้ฉันเชื่อว่าเกี่ยวข้องกับมัน xattrsแต่ฉันไม่มั่นใจในสิ่งนี้ทั้งหมดและฉันไม่รู้วิธีทดสอบจริง ๆ

ปลายทางระยะไกลคือ:

$ rsync --help | head -n 20
rsync  version 3.1.1  protocol version 31
Copyright (C) 1996-2014 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes, prealloc

แนะนำเพิ่มเติมว่า xattrs อาจเป็นกุญแจสำคัญ

มองไปที่ คำแนะนำด้านความปลอดภัย Rsync พวกเขาแนะนำสามสิ่งที่ดูเหมือนจะเกี่ยวข้อง:

หากคุณใช้ rsync รุ่นเก่ากว่า 3.1.3 เป็นไคลเอนต์และรับ xattrs จากเซิร์ฟเวอร์ rsync ที่คุณอาจไม่ไว้วางใจอย่างเต็มที่เซิร์ฟเวอร์ที่เป็นอันตราย (แก้ไข) สามารถส่งชื่อ xattr ที่ไม่สิ้นสุดด้วยค่า null เพื่อล้น xattr อ่านบัฟเฟอร์

หากคุณกำลังเรียกใช้ rsync daemon ที่เขียนได้ซึ่งเก่ากว่า 3.1.3 คุณควรเพิ่มกฎ "ปฏิเสธตัวเลือก = ป้องกัน - args" หากคุณไม่เชื่อถือผู้ใช้ที่ส่งไฟล์

หากคุณใช้ rsync รุ่นเก่ากว่า 3.1.2 เป็นไคลเอนต์และรับไฟล์จากเซิร์ฟเวอร์ rsync ที่คุณอาจไม่ไว้ใจอย่างเต็มที่เวอร์ชันนี้จะเพิ่มการตรวจสอบพิเศษลงในรายการไฟล์เพื่อป้องกันผู้ส่งไม่ให้ปรับเส้นทาง หรือการร้องขอการถ่ายโอนในลักษณะที่อาจทำให้ไฟล์ได้รับนอกปลายทางการถ่ายโอน

ฉันได้ลองใช้ชุดค่าผสมของตัวแปร (เช่น -X ) เพื่อพยายามแก้ไขสิ่งนี้ แต่ไม่พบสิ่งใดที่จะทำให้รุ่น 3.1.3 ทำงานได้ ในระหว่างนั้นฉันสามารถใช้ 3.1.1 เพื่อทำสิ่งที่ฉันต้องทำ แต่มีอะไรอีกบ้างที่ฉันสามารถตรวจสอบและ / หรือเปลี่ยนแปลงในบรรทัดคำสั่งเพื่อให้สิ่งต่าง ๆ ทำงานได้

(win10_64, GfW-2.18.0, ระยะไกลคือ ubuntu-16.04 พร้อม rsync-3.1.1)


คุณสามารถซิงค์ด้วยวิธีอื่นได้ไหม? (หากคุณย้อนกลับต้นทางและปลายทางคุณสามารถเรียกใช้คำสั่งที่เหมือนกันในเครื่องปลายทางและจะดึงข้อมูลจากเครื่องต้นทาง)
Jim MacKenzie

ความคิดที่น่าสนใจฉันไม่ได้พิจารณา ในขั้นต้นแม้ว่าฉันจะไม่ไป ลอง เพื่อ rsync จาก ubuntu (ลูกค้า) ถึง windows (เซิร์ฟเวอร์) ... ฉันเชื่อว่าเป็นไปได้ที่จะใช้ ssh / rsyncd บางรูปแบบบน windows ขอบคุณ!
r2evans

ฉันไม่มีประสบการณ์ในการทำกับ Windows แต่หากเครื่องของคุณสามารถเรียกใช้ sshd ได้คุณควรเรียกใช้ไคลเอ็นต์จากระยะไกลได้
Jim MacKenzie

ขอบคุณไม่ ความจริงที่ว่าฉันกำลังประสบปัญหานี้หมายความว่าฉันจะเจอมันกับคอมพิวเตอร์ของผู้อื่นและฉันเชื่อว่าการขอให้ทุกคนใช้เซิร์ฟเวอร์ sshd บนกล่องหน้าต่างของพวกเขาคือการแฮ็กเพื่อแก้ไขปัญหานี้ นอกจากนี้ฉันยังคุ้นเคยกับการใช้งานสิ่งต่าง ๆ บน windows ที่ฉันไม่ไว้วางใจในการใช้งานสิ่งนี้เช่นเดียวกับแถลงการณ์เกี่ยวกับระดับความสะดวกสบายของฉันกับเซิร์ฟเวอร์ใน linux และระดับความสะดวกสบายกับเซิร์ฟเวอร์บน windows
r2evans

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