การใช้ rsync จาก msysgit สำหรับไฟล์ไบนารี


22

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

อย่างไรก็ตามตอนนี้ฉันยังต้องการเพิ่มคอลเล็กชัน MP3 ของฉัน (12 กิ๊ก) เพื่อซิงโครไนซ์ระหว่างกล่องอย่างมีประสิทธิภาพ ตอนแรกฉันคิดว่าฉันสามารถใช้คอมไพล์ได้ แต่ดูเหมือนว่า rsync จะเป็นตัวเลือกที่ดีกว่าเพราะฉันไม่ต้องการสิ่งประวัติศาสตร์ทั้งหมด เนื่องจากสคริปต์การจัดการที่มีอยู่ทั้งหมดของฉันทำงานภายใต้ git bash (แทนที่จะเป็น cygwin) ฉันจึงอยากจะใช้มันจาก git bash (MINGW32 เป็นสิ่งที่มันบอกไว้ในแถบชื่อเรื่องของหน้าต่าง) ฉันสามารถดาวน์โหลดมันใน Cygwin และคัดลอกมันไปหรือมีวิธีที่ดีกว่าในการเข้าถึงมันได้หรือไม่? กล่อง Linux ใช้งาน Ubuntu Server version ล่าสุด - ฉันต้องทำอะไรเพื่อเปิดใช้งาน rsync เพื่อให้ทำงานได้อย่างถูกต้องหรือไม่?

ฉันรู้ว่าฉันอาจจะทำสิ่งนี้ด้วยวิธีที่ยากกว่าที่ต้องการเล็กน้อย แต่ฉันก็ใช้สิ่งนี้เป็นแบบฝึกหัดในการพัฒนาทักษะบรรทัดคำสั่งของฉัน ข้อเสนอแนะใด ๆ


ฉันสามารถใช้ rsync จาก cygwin shell ได้ แต่ไม่ใช่จาก msysgit ฉันพยายามคัดลอก rsync.exe จากโฟลเดอร์ bin ของ cygwin ไปยังโฟลเดอร์ bin ของ msysgit แต่ก็ยังหาไม่เจอ มีขั้นตอนอื่นที่ฉันต้องทำเพื่อติดตั้งที่นั่นหรือไม่ มันแปลกที่ฉันได้รับข้อผิดพลาดที่ไม่สามารถหาไฟล์ได้แทนที่จะให้ข้อผิดพลาดกับการอ้างอิงของไฟล์ตัวใดตัวหนึ่งหายไป

คำตอบ:


25

ณ ตอนนี้ (9/7/2560) เป็นเรื่องง่ายมากที่จะเพิ่มการสนับสนุน rsync ให้กับสภาพแวดล้อม Git สำหรับ Windows ด้วยตนเองโดยไม่ต้องหันไปใช้ Git สำหรับ Windows SDK

ฉันสะดุดข้ามโพสต์นี้และไม่คิดว่ามันเป็นเรื่องง่ายที่จะให้ทางเลือกทั้งหมด แต่มันเป็นจริง สิ่งที่คุณต้องทำคือคว้าแพ็คเกจ rsync จากที่เก็บ MSYS2 Packageและแตกrsync.exeไฟล์ออกC:\Program Files\Git\usr\binมา หนึ่งและทำ มันได้ผล.

หากคุณต้องการความช่วยเหลือในการแยกrsync.exeแพคเกจ rsync (ซึ่งอยู่ในtar.xzรูปแบบ) คุณสามารถใช้ยูทิลิตี้การบีบอัดเช่น 7zip หรือทำโดยตรงในสภาพแวดล้อมการทุบตี Git for Windows เช่น:

cd /c/downloaded_location
tar -xvf rsync.pkg.tar.xz usr/bin/rsync.exe --strip-components=2

สิ่งนี้จะให้rsync.exeไฟล์คุณในตำแหน่งที่ดาวน์โหลด (ปรับชื่อแพ็คเกจตาม) ในแง่ของปัญหาการอนุญาตของ Windows ฉันจะไม่พยายามให้คำสั่งเฉพาะในการรับ exe ลงในC:\Program Files\Git\usr\binโฟลเดอร์ คุณสามารถคัดลอกมันผ่าน explorer GUI หรือผ่านยูทิลิตี้บรรทัดคำสั่งยกระดับ (และใช่มันจะต้องมีสิทธิ์ระดับผู้ดูแลระบบเพื่อคัดลอกบางสิ่งลงในโฟลเดอร์ Program Files)

หากคุณต้องการใช้การรับรองความถูกต้องของ Pageant ด้วย rsync บน ssh ไบนารี ssh-pageant จะถูกติดตั้งแล้วใน Git สำหรับ Windowsและสิ่งที่คุณต้องทำคือเพิ่มบิต~/.bashrcหรือ~/.bash_profileไฟล์ของคุณเล็กน้อย(ดูส่วนการใช้ ssh-pageantและGit สำหรับ Windows wiki ) ฉันได้แก้ไขมันโดยเฉพาะเพื่อใช้กับสภาพแวดล้อม Git สำหรับ Windows และปรับปรุงด้วยการตรวจหาไฟล์ซ็อกเก็ตที่ขาดหายไป:

# ssh-pageant allows use of the PuTTY authentication agent (Pageant)
SSH_PAGEANT="$(command -v ssh-pageant)"
if [ -S "$SSH_AUTH_SOCK" ]; then
  PAGEANT_SOCK=$SSH_AUTH_SOCK
else
  PAGEANT_SOCK=${TEMP:-/tmp}/.ssh-pageant-$USERNAME
fi
if [ -x "$SSH_PAGEANT" ]; then
  eval $("$SSH_PAGEANT" -qra "$PAGEANT_SOCK")
fi
unset SSH_PAGEANT
unset PAGEANT_SOCK

ฉันไม่สามารถพูดได้ว่ายูทิลิตี้อื่น ๆ อาจหรือไม่ทำงานโดยการติดตั้งด้วยตนเองด้วยวิธีนี้ แต่ rsync ดูเหมือนว่าจะทำงานได้ดี หวังว่า repo จะยังคงอยู่และได้รับการอัปเดตต่อไป - ฉันคิดอย่างนั้นเพราะโฮสต์ไว้ที่เว็บไซต์อย่างเป็นทางการของ MSYS2


1
ขอบคุณครับคุณดาวน์โหลดและใช้งานได้ดี .. ใครจะรู้จัก ...
pscheit

ปัญหา. ไม่มีrsync.exersync ใน.pkg.tar.xz รูปแบบที่หลากหลายเท่านั้น อาจเป็นไปได้ยกเว้นว่าฉันไม่สามารถติดตั้งapt-get install xz-utils( sudo apt-get install xz-utils) เพราะฉันไม่สามารถติดตั้งsudoหรือapt-getไปที่ Git Bash สำหรับ Windows :-( ดังนั้นจึงไม่สามารถติดตั้งxz-utilsได้มีวิธีแก้ไขไหม? มีลิงก์ใหม่ที่ฉันสามารถหาได้rsync.exeหรือ วิธีการบางอย่างที่ฉันจะได้รับ Git ทุบตีเพื่อยกเลิกการบีบอัดไฟล์ .xz นี้หรือไม่?
SherylHohman

ที่จริงดูเหมือนว่าจะมีปัญหาสิทธิ์เพิ่มขึ้น เมื่อฉันtar -xf rsync-3.1.3-1-x86_64.pkg.tar.xzฉันได้รับพวงของข้อความเซน: Cannot open: Permission denied, Cannot mkdir: Permission denied, Cannot mkdir: No such file or directoryและCannot open: No such file or directoryต่างๆไฟล์ไดเรกทอรี / บางที Git Bash รู้วิธีคลายการบีบอัดxzไฟล์อยู่แล้ว? แต่ไม่สามารถให้สิทธิ์ b / e ได้? sudoฉันไม่สามารถใช้หรือติดตั้ง ถึง Git Bash
SherylHohman

สมมติว่าคุณดาวน์โหลดไฟล์ tar.xz ไปยังโฟลเดอร์ดาวน์โหลดคุณสามารถแตกไฟล์ออกจาก Git Bash โดยใช้:cd / && tar Jxvf /c/Users/$USR/Downloads/rsync-3.1.3-1-x86_64.pkg.tar.xz
hansfn

@SherylHohman คุณต้องแตกไฟล์ exe ด้วยตนเองจากไฟล์แพ็คเกจ ไม่จำเป็นต้องมี "การติดตั้ง" นอกจากจะวาง exe ลงในC:\Program Files\Git\usr\binโฟลเดอร์
nextgentech

7

ฉันรู้ว่าคำถามไม่ใช่ "การใช้ rsync สำหรับ MSYS" แต่ฉันคิดว่าการพูดถึงสิ่งนี้เกี่ยวข้อง:

"MinGW Shell" (เดิมชื่อ "MSYS (ระบบพื้นฐาน)") มี rsync ฉันใช้เชลล์ / ระบบนั้นบ่อยที่สุดเท่าที่จะเป็นไปได้เพราะมันเล็กกว่า Cygwin มาก (ฉันอาจเป็นคนเดียวที่ใส่ใจเกี่ยวกับขนาดไฟล์วันนี้)

"Git for Windows" / "Git Bash" สามารถเพิ่ม rsync ได้อย่างง่ายดายเพราะใช้ MinGW / MSYS และถูกกล่าวถึงในรายชื่อผู้รับจดหมายก่อนหน้านี้

PS! หาก MinGW Shell ของคุณไม่มี rsync ให้เรียกใช้ "mingw-get install msys-rsync" เพื่อเพิ่ม

อัปเดต 25 มีนาคม 2559:

Git สำหรับ Windows ตอนนี้ใช้ MSYS2 และ MSYS2 ใช้ "pacman" ไม่ใช่ "mingw-get" เพื่อติดตั้งแพ็คเกจ น่าเสียดายที่ "Git สำหรับ Windows" ไม่มี pacman ... มีสองตัวเลือก:

  1. ติดตั้ง Git สำหรับ Windows SDK (ซึ่งรวมถึง pacman)
  2. ติดตั้ง Git ภายใน MSYS2

ตัวเลือกสุดท้ายเป็นรายการโปรดของฉัน แต่ก็ยังไม่คล่องตัวดังนั้นตัวเลือกแรกน่าจะง่ายกว่า หวังว่ามันจะได้รับการแก้ไข

PS! ฉันไม่ได้เล่นกับ MSYS2 / pacman มากนัก แต่ดูเหมือนว่าจะมีแนวโน้มมาก

อัปเดตเมื่อวันที่ 7 สิงหาคม 2019:

หากคุณกำลังใช้ Git สำหรับ Windows (Git Bash) มันเป็นเรื่องที่ดีมากที่จะเพียงแค่คว้าแพคเกจ rsync จากพื้นที่เก็บข้อมูล MSYS2 แพคเกจตามที่อธิบายไว้ในคำตอบข้างต้น


น่าเศร้าใน Git Bash:$ mingw-get bash: mingw-get: command not found
Hendy Irawan

ใช่มันค่อนข้างเศร้า ดูคำตอบที่อัปเดตของฉันด้านบน - ยังเศร้า แต่สถานการณ์ดีขึ้น
hansfn

ฉันเลือกตัวเลือกที่สองและลงเอยด้วยโฟลเดอร์ 2.17GB แต่ทุกอย่างทำงานได้อย่างมีเสน่ห์ ผมติดตั้ง rsync pacman -S rsyncโดยใช้ ในอดีตที่ผ่านมาฉันใช้ CygWin แต่ฉันคิดว่า MSYS2 ยอดเยี่ยมฉันไม่ต้องเรียกใช้ gui เพื่อติดตั้งแพ็คเกจเพิ่มเติม
Edenshaw

รายงานข้อผิดพลาดที่ระบุไว้ในคำตอบนี้ได้ถูกปิดเป็น "unfixable" - แต่ผมได้สร้างคำขอดึงไปได้รวม rsync กับ Git สำหรับ Windows
Scott Stevens

ลิงก์ใด ๆ เกี่ยวกับวิธีการเลือก 1 หรือ 2 ตัวเลือก ฉันคิดว่าฉันมี Git สำหรับ Windows SDK dunno แต่สมมติว่าฉันทำหรือได้มันมา .. แล้วงั้นเหรอ? ถ้าไม่ฉันไม่ทราบเลยว่าการติดตั้ง Git ใน MSYS2 นั้นหมายถึงอะไร นั่นหมายความว่าฉันต้องลบการติดตั้ง Git ปัจจุบันของฉัน ฉันจะทำทุกสิ่งเช่นการตั้งค่าหรือฟังก์ชั่นถ้าฉันทำ ลิงก์จะไม่หยุดหรือไม่
SherylHohman

2

ฉันถือว่าgit bashคุณหมายถึงว่าจริงๆแล้วmsysgitคือ "git for windows" ตัวเลือกเมนูเริ่มคือgit bashซึ่งจะอธิบายชื่อที่คุณใช้ ..

ขั้นแรกคุณถูกต้องในการยกเลิก git เป็นตัวเลือกที่นี่ สิ่งหนึ่งที่คอมไพล์ทำได้ไม่ดีคือการจัดการไฟล์ไบนารี - และคุณจะได้พื้นที่เก็บข้อมูลขนาดใหญ่ป่อง นอกจากนี้เนื่องจากคุณจะไม่จัดการกับการเปลี่ยนแปลงการใช้โอเวอร์เฮดของ git ทำให้ฉันเป็น overkill

ประการที่สองดูเหมือนคำถามที่คุณถามจริง ๆ ว่า "ฉันสามารถใช้ rsync จาก msysgit / Windows ได้หรือไม่" คำตอบสั้น ๆ คือไม่ออกนอกกรอบ msysgitเป็นเพียงบรรทัดคำสั่งของ Windows ในรูปแบบและฟังก์ชั่น ดังที่กล่าวไว้คุณมีสองตัวเลือก: ดาวน์โหลดเครื่องมือของบุคคลที่สามเพื่อเปิดใช้งาน rsync บนเครื่อง Windows ของคุณ ( Stack Overflow: Rsync สำหรับ Windows ) หรือเพียงแค่ใช้ cygwin จริง ๆ แล้วพวกเขามีผลลัพธ์เหมือนกันดังนั้นจึงขึ้นอยู่กับคุณที่จะตัดสินใจว่าอันไหนดีกว่า


ฉันสามารถใช้ rsync จาก cygwin shell ได้ แต่ไม่ใช่จาก msysgit ฉันพยายามคัดลอก rsync.exe จากโฟลเดอร์ bin ของ cygwin ไปยังโฟลเดอร์ bin ของ msysgit แต่ก็ยังหาไม่เจอ มีขั้นตอนอื่นที่ฉันต้องทำเพื่อติดตั้งที่นั่นหรือไม่ มันแปลกที่ฉันได้รับข้อผิดพลาดที่ไม่สามารถหาไฟล์ได้แทนที่จะให้ข้อผิดพลาดกับการอ้างอิงของไฟล์ตัวใดตัวหนึ่งหายไป ขอบคุณ Will
Will Gant

สิ่งนี้เป็นไปไม่ได้ cygwin ตั้งค่าสภาพแวดล้อมที่ใช้ GNU รวมถึงไลบรารี่ที่คล้ายกับ Linux, configs และอื่น ๆ msysgitคือบรรทัดคำสั่งของ Windows ซึ่งรองรับการทำงานของ Windows สิ่งที่น่าจะเกิดขึ้นคือมันไม่สามารถตรวจจับไฟล์ว่าเป็นไฟล์ที่เรียกใช้งานได้ เพียงแค่ใส่ cygwin และ msysgit ก็ไม่สามารถใช้งานร่วมกันได้จากระยะไกล
แอนดรูว์เอ็ม

มันอาจจะเป็น แต่แฮ็ค คัดลอกcygiconv-2.dll, cygwin1.dllและrsync.exeจาก Cygwin ไปยังเส้นทาง msysgit ของคุณ ไม่มีอะไรอื่น (โดยเฉพาะอย่างยิ่งไม่ใช่ ssh.exe) ปัญหานี้มักจะเข้ากันไม่ได้ระหว่าง Git SSH และ Cygwin / rsync SSH พยายามเก็บเวอร์ชันเดิมไว้ คุณจะยังคงมีปัญหาเกี่ยวกับแต่มีฉันไม่มีวิธีแก้ยกเว้น/cygdrive/ cd
Wernight

0

สำหรับสิ่งที่มันคุ้มค่าผมมีปัญหาที่คล้ายกันรับcwrsyncการทำงานใน msysgit ลดลงเมื่อเข้ามาในเส้นทางถัง แต่หลังจากที่พยายามจำนวนมากสิ่งที่แตกต่างกันในที่สุดก็พบว่าเพียงแค่การปรับปรุงให้เป็นรุ่นล่าสุด (2.10.2) ของGit สำหรับ Windowsคงที่ ปัญหา.


cwRsync คือ $ 19 / ปีitefix.net/cwrsync
SherylHohman

0

rsync เหมาะสำหรับการซิงค์ทิศทางเดียว คุณสามารถเรียกใช้ rsync ภายใต้ cygwin หรือสำหรับ Windows นอกจากนี้ยังมีDeltacopy

หากคุณต้องการซิงค์แบบสองทิศทางให้ดูที่พร้อมเพรียงกัน

สำหรับเครื่องมือการซิงโครไนซ์ไดเรกทอรีข้ามแพลตฟอร์มมีsyncthingซึ่งทำงานบนแพลตฟอร์มส่วนใหญ่


พร้อมเพรียงดี แต่คุณต้องติดตั้งบนเซิร์ฟเวอร์ - เช่น 90% ของเซิร์ฟเวอร์พร้อม rsync และ OP ขอ rsync
pscheit

OP ถามเกี่ยวกับ rsync, แต่สิ่งที่ OP พยายามบรรลุคือ "การซิงโครไนซ์ระหว่างกล่องได้อย่างมีประสิทธิภาพ", และพร้อมเพรียงมีอยู่ใน repos ส่วนใหญ่ ...
shouldbeq931

ดูเหมือนว่า DeltaCopy ไม่สามารถใช้งานได้กับ Windows 10 จะไม่ได้รับการดูแลอีกต่อไปหรือไม่
SherylHohman

เป็นการยากที่จะบอกว่า Unison ทำงานบน Windows 10 ไม่ได้มีการอัปเดตเป็นระยะเวลานาน ไม่มีการกล่าวถึงรุ่นของ Windows OS ที่ซอฟต์แวร์นี้รองรับ มีปัญหาหลายเรื่อง: Windows 10 github.com/bcpierce00/unison/ …
SherylHohman

ในฐานะเครื่องมือข้ามแพลตฟอร์มที่จะทำให้โครงสร้างไดเรกทอรีตรงกันทุกวันนี้ฉันขอแนะนำ syncthing syncthing.netอย่างไรก็ตามในปี 2011 ....
shouldbeq931
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.