이진 파일에 대해 msysgit에서 rsync 사용


22

네트워크의 Linux 상자에 다양한 방법으로 연결된 세 개의 Windows 상자가 있습니다 (하나는 네트워크에 로컬이고 하나는 랩톱이고 로컬이거나 아닐 수도 있습니다). 현재 git을 사용하여 상자 사이에서 대부분의 물건을 동기화하고 (Linux 상자를 서버로 사용) 챔피언처럼 작동합니다.

그러나 이제 상자간에 효율적으로 동기화되도록 MP3 컬렉션 (12 기가)을 추가하고 싶습니다. 나는 처음에 이것을 위해 git을 사용할 수 있다고 생각했지만 실제로 모든 역사적인 것들이 필요하지 않기 때문에 rsync가 더 나은 선택 인 것처럼 보입니다. 기존의 모든 관리 스크립트가 cygwin 대신 git bash에서 실행되므로 git bash에서 사용할 수 있기를 원합니다 (MINGW32는 창의 제목 표시 줄에 표시됩니다). Cygwin에서 다운로드하여 복사 할 수 있습니까, 아니면 접근하는 더 좋은 방법이 있습니까? Linux 박스는 최신 버전의 Ubuntu Server 에디션을 실행 중입니다. rsync가 제대로 작동하려면 무엇을해야합니까?

아마도 내가 필요한 것보다 약간 어려운 방식 으로이 작업을 수행하고 있음을 알지만 명령 줄 기술을 향상시키는 연습으로도 사용하고 있습니다. 어떤 제안?


내 cygwin 쉘에서 rsync를 사용할 수 있지만 msysgit에서는 사용할 수 없습니다. rsync.exe를 cygwin의 bin 폴더에서 msysgit의 bin 폴더로 복사하려고 시도했지만 여전히 찾지 못했습니다. 거기에 설치해야 할 다른 단계가 있습니까? 파일의 종속성 중 하나가 누락되었다는 오류를 표시하는 대신 파일을 찾을 수 없다는 오류가 발생하는 것은 이상합니다.

답변:


25

현재 (2017 년 9 월 7 일) Git for Windows SDK를 실행하지 않고도 Windows 용 Git 환경에 rsync 지원을 수동으로 추가하는 것이 매우 쉽습니다.

나는 이 게시물을 우연히 발견 했으며 모든 대안을 고려할 때 실제로 그렇게 쉬울 수 있다고 생각하지는 않았지만 실제로는 그렇게 생각합니다. MSYS2 패키지 저장소 에서 rsync 패키지를 가져 와서rsync.exe 파일을 추출하기 만하면 됩니다 C:\Program Files\Git\usr\bin. 하나와 완료. 작동합니다.

rsync.exersync 패키지 ( tar.xz포맷 형식) 에서 추출 하는 데 도움이 필요한 경우 7zip과 같은 압축 유틸리티를 사용하거나 다음과 같이 Git for Windows bash 환경에서 직접 수행 할 수 있습니다.

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폴더 로 가져 오는 데 대한 특정 명령을 제공하려고 시도하지 않습니다 . 탐색기 GUI 또는 고급 명령 줄 유틸리티를 통해 파일을 복사 할 수 있습니다 (그렇습니다. 프로그램 파일 폴더에 파일을 복사하려면 관리자 수준의 권한이 필요합니다).

ssh를 통한 rsync와 함께 Pageant 인증을 사용하려면 ssh-pageant 바이너리가 Windows 용 Git에 이미 설치되어 있으므로 사용자 ~/.bashrc또는 ~/.bash_profile파일에 약간의 비트를 추가하기 만하면됩니다 (ssh-pageant 사용법 섹션Git 참조). Windows wiki ). Git for 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는 정상적으로 작동하는 것으로 보입니다. 이 레포가 계속 유지되고 계속 업데이트되기를 바랍니다. 공식 MSYS2 사이트에서 호스팅되기 때문에 그렇게 생각합니다.


1
감사합니다. 다운로드하고 작동합니다. .. 누가
알았 을까요

문제. 더 없습니다 rsync.exe에서 rsync를 다양한 버전의 유일한 .pkg.tar.xz 형식은. 그게 내가 설치할 수 있다는 점을 제외하고, 확인을 수 있습니다 apt-get install xz-utils( sudo apt-get install xz-utils나는 어느 쪽도 설치할 수 있기 때문에) sudo또는 apt-get설치할 수 없습니다, 따라서 따라서 Windows 용 망할 놈의 강타에 :-(과 xz-utils내가 얻을 수있는 새로운 링크가 있는가?이 주변에 어떤 방법이 있나요. rsync.exe또는 어떤 방법 나는 압축을 풉니이 .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 directoryCannot open: No such file or directory다양한 파일 / 디렉토리. 아마도 Git Bash는 이미 xz파일 을 압축 해제하는 방법을 알고 있습니까? 그러나 b / e 권한이 없습니까? 사용하거나 설치할 수 없습니다 sudo. Git Bash에게.
SherylHohman

tar.xz 파일을 Downloads 폴더로 다운로드했다고 가정하면 다음을 사용하여 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

질문이 "MSYS에 rsync 사용"이 아니라는 것을 알고 있지만 이것이 언급하는 것이 적절하다고 생각합니다.

"MinGW Shell"(이전의 "MSYS (기본 시스템)"으로 가장 잘 알려져 있음)에는 실제로 rsync가 있습니다. Cygwin보다 훨씬 작기 때문에 가능한 한 자주 셸 / 시스템을 사용하고 있습니다. (요즘에는 파일 크기에 관심이있는 유일한 사람 일 것입니다.)

"Git for Windows"/ "Git Bash"는 MinGW / MSYS를 기반으로하기 때문에 rsync를 쉽게 추가 할 수 있으며 앞에서 메일 링리스트에 언급되었습니다.

추신! MinGW Shell에 rsync가없는 경우 "mingw-get install msys-rsync"를 실행하여 추가하십시오.

2016 년 3 월 25 일 업데이트 :

Windows 용 Git은 이제 MSYS2를 사용합니다. 그리고 MSYS2는 "mingw-get"이 아닌 "pacman"을 사용하여 패키지를 설치합니다. 불행히도 "Git for Windows"에는 pacman이 포함되어 있지 않습니다 ... 두 가지 옵션이 있습니다 :

  1. Git for Windows SDK (pacman 포함)를 설치하십시오.
  2. MSYS2 안에 Git을 설치하십시오.

마지막 옵션은 내가 가장 좋아하지만 아직 간소화되지 않았 으므로 첫 번째 옵션이 더 쉬울 것입니다. 잘만되면, 그것은 고쳐질 것이다.

추신! 나는 MSYS2 / pacman으로 많이 연주하지는 않았지만 매우 유망한 것 같습니다.

2019 년 8 월 7 일 업데이트 :

Windows 용 Git (Git Bash)을 사용하는 경우 답변 에서 설명한 것처럼 MSYS2 패키지 저장소에서 rsync 패키지를 가져 오는 것이 훨씬 좋습니다 .


슬프게도 Git Bash에서 :$ mingw-get bash: mingw-get: command not found
Hendy Irawan

예, 조금 슬 '습니다. 위의 업데이트 된 답변을보십시오-여전히 슬프지만 상황이 개선되었습니다.
hansfn

나는 두 번째 옵션으로 가서 2.17GB 폴더로 끝났지 만 모든 것이 매력처럼 작동합니다. 를 사용하여 rsync를 설치했습니다 pacman -S rsync. 과거에는 CygWin을 사용했지만 MSYS2가 훌륭하다고 생각합니다. 추가 패키지를 설치하기 위해 GUI를 실행할 필요가 없습니다.
Edenshaw 2016 년

이 답변에 나열된 버그 보고서는 이후 "수정 불가능"으로 마감되었습니다. 그러나 Windows 용 Git에 rsync가 포함되도록 풀 요청을 만들었습니다 .
Scott Stevens

옵션 1 또는 옵션 2를 수행하는 방법에 대한 링크가 있습니까? Windows SDK 용 Git이 있다고 생각합니다. 던노 하지만 내가 할 수 있다고 가정하면 어떻게 될까요? 그렇지 않다면 MSYS2에 Git을 설치하는 것이 무엇을 의미하는지 전혀 모른다. 현재 Git 설치를 삭제해야한다는 의미입니까? 그렇게하면 설정이나 기능과 같은 것을 잃어 버리겠습니까? nay 링크가 끊어 집니까?
SherylHohman

2

나는 "창문을위한 자식 (git for windows)"을 git bash의미 한다고 가정한다 msysgit. 시작 메뉴 옵션은 git bash사용 된 이름을 설명합니다.

먼저 git을 옵션으로 닫는 것이 옳습니다. git이 잘 하지 못하는 것 중 하나는 바이너리 파일을 처리하는 것입니다. 또한 변경 사항을 처리하지 않기 때문에 git 오버 헤드를 사용하면 과도하게 사용됩니다.

둘째, 실제로 묻는 질문은 "msysgit / Windows에서 rsync를 사용할 수 있습니까?"입니다. 짧은 대답은 바로 사용할 수 있습니다. msysgit형식과 기능면에서 Windows 명령 줄입니다. 즉, Windows 시스템에서 rsync를 활성화하는 타사 도구를 다운로드하거나 ( Stack Overflow : Rsync for Windows ) cygwin 을 사용하는 두 가지 옵션이 있습니다 . 실제로, 그들은 동일한 결과를 가지므로 어느 것이 더 효과가 좋은지 결정하는 것은 당신에게 달려 있습니다.


내 cygwin 쉘에서 rsync를 사용할 수 있지만 msysgit에서는 사용할 수 없습니다. rsync.exe를 cygwin의 bin 폴더에서 msysgit의 bin 폴더로 복사하려고 시도했지만 여전히 찾지 못했습니다. 거기에 설치해야 할 다른 단계가 있습니까? 파일의 종속성 중 하나가 누락되었다는 오류를 표시하는 대신 파일을 찾을 수 없다는 오류가 발생하는 것은 이상합니다. 감사합니다, 윌
윌 Gant

이것은 단순히 불가능합니다. cygwin은 Linux와 같은 라이브러리, 구성 등을 포함한 GNU 기반 환경을 설정합니다 msysgit. Windows 실행 파일을 지원하는 Windows 명령 줄입니다. 일어날 수있는 일은 파일을 실행 파일로 감지 할 수조차 없다는 것입니다. 간단히 말해 cygwin과 msysgit은 원격으로 호환되지 않습니다.
Andrew M.

가능하지만 해키입니다. 복사 cygiconv-2.dll, cygwin1.dllrsync.exeCygwin에서에서 msysgit 경로. 다른 것은 없습니다 (특히 ssh.exe는 아닙니다). 문제는 일반적으로 Git SSH와 Cygwin / rsync SSH 간의 비 호환성입니다. 같은 버전을 유지하십시오. 여전히 문제가 /cygdrive/있지만를 제외하고는 해결책이 없습니다 cd.
Wernight


0

rsync는 단방향 동기화에 좋습니다. cygwin에서 rsync를 실행하거나 Windows의 경우 Deltacopy있습니다.

양방향 동기화를 원한다면 유니슨을 살펴보십시오.

크로스 플랫폼 디렉터리 동기화 도구를 들어,이 syncthing 대부분의 플랫폼에서 실행됩니다.


unison은 훌륭하지만 서버의 90 %가 재 동기화되는 것처럼 서버에 설치해야합니다. 그리고 OP는 rsync를 요청했습니다
pscheit

OP는 rsync에 대해 물었지만 OP가 달성하려는 것은 "상자들 사이에서 효율적으로 동기화되는"것이었고, 대부분의 저장소에서 unison을 사용할 수 있습니다 ...
shouldbeq931

Windows 10에서는 DeltaCopy를 사용할 수없는 것 같습니다. 더 이상 유지 관리 할 수 ​​없습니까?
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.