İkili dosyalar için msysgit'ten rsync kullanımı


22

Ağımdaki bir linux kutuya çeşitli şekillerde bağlı üç pencere kutusu var (biri ağa yerel, biri dizüstü bilgisayar, yerel olabilir ya da diğeri iş masaüstüm olabilir). Şu anda eşyalarımı kutular arasında (Linux kutusunu sunucu olarak kullanarak) senkronize etmek için git'i kullanıyorum ve bir şampiyon gibi çalışıyor.

Ancak şimdi, MP3 koleksiyonumu (12 gigs) kutular arasında verimli bir şekilde senkronize edilmesini de eklemek isterim. Başlangıçta bunun için git'i kullanabileceğimi düşündüm, ama gerçekten de tüm tarihsel şeylere ihtiyaç duymadığım için rsync daha iyi bir seçim olacak gibi görünüyor. Var olan tüm yönetim komut dosyalarım git bash altında çalıştığından (cygwin yerine), onu git bash'dan kullanabilmek istiyorum (MINGW32, pencerenin başlık çubuğunda yazdığı şeydir). Sadece Cygwin'den indirebilir ve kopyalayabilir miyim, yoksa yaklaşmanın daha iyi bir yolu var mı? Linux kutusu Ubuntu Server edition'un en son versiyonunu kullanıyor - rsync'in düzgün çalışabilmesi için herhangi bir şey yapmalı mıyım?

Muhtemelen bunu gerekenden biraz daha zor bir şekilde yaptığımı biliyorum, ama aynı zamanda bunu komut satırı becerilerimi geliştirmek için bir egzersiz olarak kullanıyorum. Baska öneri?


Rsync'i cygwin kabuğumdan kullanabiliyorum, ancak msysgit'ten kullanamıyorum. Rsync.exe dosyasını cygwin'in bin klasöründen msysgit'in bin klasörüne kopyalamayı denedim, ancak hala bulamıyor. Oraya kurmak için yapmam gereken başka bir adım var mı? Bana dosya bağımlılıklarından birinin eksik olduğu konusunda bir hata vermek yerine dosyayı bulamaması hatası alıyorum.

Yanıtlar:


25

Şu andan itibaren (09.07.2017) Git için Windows SDK çalıştırmaya gerek kalmadan Git için Windows ortamına rsync desteğini elle eklemek son derece kolaydır.

Ben tökezledi bu yazı ve gerçekten kolay tüm alternatifleri verilmiş olması olabilir düşünmüyordu, ama gerçekten öyle. Yapmanız gereken tek şey MSYS2 Paket deposundan rsync paketini almak ve rsync.exedosyayı çıkartmak C:\Program Files\Git\usr\bin. Bir ve bitti. İşe yarıyor.

rsync.exeRsync paketinden ( tar.xzformatta) çıkarmak için yardıma ihtiyacınız varsa , 7zip gibi bir sıkıştırma yardımcı programını kullanabilir veya bunu gibi Git for Windows bash ortamında doğrudan yapabilirsiniz:

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

Bu rsync.exe, indirilen konumdaki dosyayı verir (paket adını uygun şekilde ayarlayın). Windows izinleri sorunları ışığında, exe'yi C:\Program Files\Git\usr\binklasöre alma konusunda belirli komutlar vermeye çalışmıyorum . Bir kaşif GUI veya yükseltilmiş bir komut satırı yardımcı programı aracılığıyla kopyalayabilirsiniz (ve evet, bir şeyi Program Dosyaları klasörlerine kopyalamak için yönetici düzeyinde izinler gerekir).

Pageant kimlik doğrulamasını ssh üzerinden rsync ile de kullanmak istiyorsanız, ssh-pageant binary Windows için Git'e zaten yüklenmiştir ve yapmanız gereken tek şey ~/.bashrcya da ~/.bash_profiledosyanıza küçük bir bit eklemektir (bkz. Ssh-pageant kullanımı bölümü ve Git Windows wiki ). Git for Windows ortamında kullanmak için özel olarak değiştirdim ve eksik bir soket dosyası için bir tespitle geliştirdim:

# 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

Diğer araçların bu şekilde elle yükleyerek nasıl çalışabileceğini veya çalışmayacağını konuşamıyorum, ancak rsync gayet iyi çalışıyor gibi görünüyor. Umarım bu repo kalır ve güncellenmeye devam eder - Bence resmi MSYS2 sitesinde barındırılıyor çünkü.


1
teşekkür ederim bayım, indirme ve çalışıyor .. kim bilebilirdi ...
pscheit

Sorun. Formatlarda rsync.exesadece çeşitli rsync versiyonu yoktur .pkg.tar.xzBen yükleyememesini hariç, Tamam olabilir apt-get install xz-utils( sudo apt-get install xz-utilsı ne yükleyebilirsiniz çünkü) sudoVEYA apt-getyükleyemezsiniz böylece böylece Windows için Git Bash'e :-( ve xz-utilsalabilirim yeni bir bağlantı var mıdır? Bu çevrede herhangi bir yolu var mı. rsync.exeYa bir şekilde Git Bash'in bu .xz dosyasını açmasını sağlayabilir miyim?
SherylHohman

Aslında, daha fazla izin sorunu gibi görünüyor. Ne zaman tar -xf rsync-3.1.3-1-x86_64.pkg.tar.xz, ben belirten bir sürü mesaj almak: Cannot open: Permission denied, Cannot mkdir: Permission denied, Cannot mkdir: No such file or directoryve Cannot open: No such file or directoryçeşitli dosyaları / dizinleri için. Belki Git Bash zaten xzdosyaların nasıl açılacağını biliyordur ? Ancak izinlerin b / e olamaz? Kullanamıyorum veya kuramıyorum sudo. Git Bash'e.
SherylHohman

Tar.xz dosyasını İndirmeler klasörüne indirdiğinizi varsayarak, aşağıdakileri kullanarak Git cd / && tar Jxvf /c/Users/$USR/Downloads/rsync-3.1.3-1-x86_64.pkg.tar.xz
Bash'den paketinden çıkarabilirsiniz

@ SherylHohman, exe'yi paket dosyasından elle çıkarmanız gerekir. Sadece exe'yi C:\Program Files\Git\usr\binklasöre bırakmaktan başka "kurulum" gerekli değildir .
nextgentech

7

Sorunun "MSYS için rsync kullanma" olmadığını biliyorum, ancak bunun belirtildiğinin önemli olduğunu düşünüyorum:

"MinGW Shell" (eski adıyla "MSYS (Basic System)" olarak bilinir) gerçekten rsync'e sahiptir. Bu kabuğu / sistemi mümkün olduğunca sık kullanıyorum çünkü Cygwin'den çok daha küçük. (Muhtemelen bugünlerde dosya boyutlarını önemseyen tek kişi benim.)

"Git for Windows" / "Git Bash", MinGW / MSYS tabanlı olduğundan ve daha önce e-posta listesinde belirtildiği için kolayca rsync ekleyebilir.

PS! MinGW Shell'iniz rsync'e sahip değilse, eklemek için sadece "mingw-get install msys-rsync" komutunu çalıştırın.

25 Mart 2016 tarihinde güncellendi:

Git için Windows şimdi MSYS2 kullanıyor. Ve MSYS2 paketleri kurmak için "mingw-get" yerine "pacman" kullanır. Ne yazık ki, "Git for Windows" pacman içermiyor ... İki seçenek var:

  1. Git for Windows SDK'yı (pacman içeren) yükleyin.
  2. Git'i MSYS2'ye yükleyin.

Son seçenek benim favorim, fakat henüz basitleştirilmedi, bu yüzden ilk seçenek muhtemelen daha kolay. Umarım, düzeltilecektir .

PS! MSYS2 / pacman ile pek oynamadım, ama çok umut verici görünüyor.

7 Ağustos 2019'da güncellendi:

Git için Windows kullanıyorsanız (Git Bash), yukarıdaki cevapta açıklandığı gibi, rsync paketini MSYS2 Paket havuzundan almak çok daha iyidir .


ne yazık ki, Git Bash içinde:$ mingw-get bash: mingw-get: command not found
Hendy Irawan

Evet, biraz üzücü. Yukarıdaki güncellenmiş cevaba bak - hala üzgün, ama durum düzeldi.
hansfn

İkinci seçenek için gittim ve 2.17GB'lık bir klasörle bitirdim, ama her şey bir cazibe gibi çalışıyor. Kullanarak rsync'i kurdum pacman -S rsync. Geçmişte CygWin kullandım ama MSYS2'nin harika olduğunu düşünüyorum, fazladan paketler yüklemek için bir gui çalıştırmak zorunda değilim.
Edenshaw,

Bu cevapta listelenen hata raporu o zamandan beri "düzeltilemez" olarak kapatıldı - ancak, rsync'in Git for Windows'a dahil edilmesi için bir çekme isteği oluşturdum .
Scott Stevens

Seçenek 1 veya seçenek 2'nin nasıl yapıldığına dair herhangi bir link var mı? Windows SDK için Git'e sahip olduğumu düşünüyorum. Dunno. Ama farz edersem veya alabilirim ... peki ya sonra? Olmazsa, Git'i MSYS2'ye yüklemenin ne demek olduğu hakkında hiçbir fikrim yok. Bu, mevcut Git kurulumumu silmem gerektiği anlamına mı geliyor. Yapmam durumunda ayarlar veya işlevler gibi bir şey kaybedecek miyim? Nay bağlantılar kopacak mı?
SherylHohman

2

Sanırım git bashsizin için gerçekten demek msysgit, "windows için git" demek . Başlat Menüsü seçeneği, git bashkullandığınız adı açıklar.

Öncelikle, burada seçenek olarak gitmeyi reddetmekte haklısınız. Yok git şeylerden biri değil iyi yapmak ikili dosyaları işleme edilmektedir - ve büyük, şişirilmiş depo ile bitirmek istiyorum. Ek olarak, değişikliklerle uğraşmayacağınız için, git ek yükünü kullanmak bana aşırı zarar verir.

İkincisi, aslında sorduğunuz soru, "rsync'i msysgit / Windows'tan kullanabilir miyim?" Kısa cevap, kutunun dışında değil. msysgitgerçekten sadece Windows komut satırı biçim ve işlev açısından. Söylendiği gibi, iki seçeneğiniz var: Windows makinenizde rsync'i etkinleştirmek için üçüncü taraf bir araç indirin ( Yığın Taşması: Windows için Rsync ) veya sadece cygwin'i kullanın. Gerçekten, aynı sonuca sahipler - yani hangilerinin daha iyi çalıştığına karar vermek size kalmış.


Rsync'i cygwin kabuğumdan kullanabiliyorum, ancak msysgit'ten kullanamıyorum. Rsync.exe dosyasını cygwin'in bin klasöründen msysgit'in bin klasörüne kopyalamayı denedim, ancak hala bulamıyor. Oraya kurmak için yapmam gereken başka bir adım var mı? Bana dosya bağımlılıklarından birinin eksik olduğu konusunda bir hata vermek yerine dosyayı bulamaması hatası alıyorum. Teşekkürler, Will
Gant olacak

Bu sadece mümkün değil. cygwin, Linux benzeri kütüphaneler, yapılandırmalar, vb. dahil olmak üzere GNU tabanlı bir ortam kurar msysgit, Windows çalıştırılabilirlerini destekleyen Windows komut satırıdır. Olması muhtemel olan, dosyayı çalıştırılabilir olarak algılayamamasıdır. Basitçe söylemek gerekirse, cygwin ve msysgit, uzaktan bile uyumlu değil.
Andrew M.

Muhtemelen ama hack. Kopya cygiconv-2.dll, cygwin1.dllve rsync.exeCygwin adresinin msysgit yoluna. Başka bir şey yok (özellikle ssh.exe değil). Sorun genellikle Git SSH ve Cygwin / rsync SSH arasındaki uyumsuzluktur. Aynı sürümü tutmaya çalışın. Hala sorunlarınız olacak /cygdrive/ama bunun dışında bir çözümüm yok cd.
Wernight


0

rsync, tek yönlü senkronizasyon için mükemmeldir. Rsync'i cygwin altında çalıştırabilir veya Windows için de Deltacopy vardır.

İki yönlü senkronizasyon yapmak istiyorsanız, o zaman unison'a bir göz atın.

Bir çapraz platform dizin eşitleme aracı için, orada syncthing en platformlarda çalışır.


unison harika, fakat onu sunucuya yüklemelisiniz - sunucuların% 90'ı rsync hazır. Ve OP rsync istedi
pscheit

OP rsync sorulduğunda, ama ne OP "verimli kutuları arasında senkronize edilecek" oldu ulaşmak için çalışıyordum, hep bir ağızdan ... En repo mevcuttur
shouldbeq931

DeltaCopy, Windows 10 için mevcut değil gibi görünüyor.
SherylHohman

Unison'un Windows 10'da çalışıp çalışmadığını söylemek zor. Uzun zamandır bir güncelleme yapılmadı. Bu yazılımın hangi Windows işletim sistemi sürümlerini desteklediğinden bahsedilmez. Birkaç sorun daha var: Windows 10 github.com/bcpierce00/unison/…
SherylHohman

Bu günlerde senkronizasyon bir dizin yapısını korumak için bir çapraz platform aracı olarak, ben syncthing öneririm syncthing.net .... 2011 yılında Ancak
shouldbeq931
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.