Використання rsync з msysgit для бінарних файлів


22

У мене є три віконні вікна, які підключені до вікна Linux у моїй мережі різними способами (один локальний для мережі, один - ноутбук, а може бути і не бути локальним, а інший - моїм робочим робочим столом). Зараз я використовую git, щоб синхронізувати більшість моїх речей між коробками (використовуючи поле Linux як сервер), і він працює як чемпіон.

Тепер я також хотів би додати свою колекцію MP3 (12 концертів) для ефективної синхронізації між коробками. Спочатку я думав, що можу використовувати для цього git, але схоже, що rsync був би кращим вибором, оскільки мені не потрібні всі історичні речі. Оскільки всі мої існуючі сценарії управління працюють під git bash (замість cygwin), я хотів би мати можливість використовувати його з git bash (MINGW32 - це те, що написано у заголовку вікна). Чи можу я просто завантажити його в Cygwin і скопіювати його чи є кращий спосіб підійти до нього? У вікні Linux працює остання версія версії Ubuntu Server - чи потрібно мені щось робити для того, щоб rsync правильно працював на ній?

Я усвідомлюю, що, мабуть, роблю це трохи складніше, ніж потрібно, але я також якось використовую це як вправу для вдосконалення своїх навичок командного рядка. Будь-які пропозиції?


Я можу використовувати rsync з моєї оболонки cygwin, але не з msysgit. Я спробував скопіювати rsync.exe з папки bin cygwin в папку bins msysgit, але вона все ще не знаходить її. Чи є ще якийсь крок, який мені потрібно зробити, щоб встановити його там? Дивно, що я отримую помилку, що він не може знайти файл, замість того, щоб дати мені помилку, що одна із залежностей файлу відсутня.

Відповіді:


25

На даний момент (9.09.2017) вручну додати підтримку rsync до середовища Git для Windows надзвичайно просто, навіть не вдаючись до запуску пакета SDK Git для Windows.

Я наткнувся на цю посаду і не подумав, що це дійсно може бути таким простим, даючи всі альтернативи, але це дійсно так. Все, що вам потрібно зробити, це забрати пакет rsync з сховища пакунків MSYS2 і витягнути rsync.exeфайл у C:\Program Files\Git\usr\bin. Один і готовий. Це працює.

Якщо вам потрібна допомога з вилучення rsync.exeз пакета rsync (який знаходиться у tar.xzформаті), ви можете скористатись утилітою стиснення на зразок 7zip або зробити це безпосередньо в середовищі bash Git для 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папку. Ви можете скопіювати його через GUI Explorer або через підвищену утиліту командного рядка (і так, для копіювання чогось у папки програмних файлів потрібні дозволи адміністратора).

Якщо ви також бажаєте використовувати автентифікацію Pageant з rsync через ssh, бінарний файл ssh-театру вже встановлений у Git для Windows, і все, що вам потрібно зробити, це додати невеликий біт у свій файл ~/.bashrcабо ~/.bash_profileфайл (див. Розділ використання ssh-pageant та Git для Вікі Windows ). Я змінив його спеціально для використання з середовищем 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, здається, працює чудово. Сподіваюсь, що репо залишиться та продовжуватиме оновлюватись - я б так вважав, тому що він розміщений на офіційному сайті MSYS2.


1
дякую, сер, завантажуючи і це працює .. хто б знав ...
pscheit

Проблема. Існує не rsync.exeлише різні версії rsync у .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 Bash віджати цей файл .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файли? Але чи не може бути дозволу? Я не можу використовувати або встановлювати sudo. до Гіт Баша.
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" (раніше найвідоміша як "MSYS (базова система)") дійсно має rsync. Я використовую цю оболонку / систему якомога частіше, оскільки вона набагато менша, ніж Cygwin. (Мабуть, я єдиний, хто піклується про розміри файлів у наші дні.)

"Git для Windows" / "Git Bash" може легко додати rsync, оскільки вона базується на MinGW / MSYS, і вона вже згадувалася у списку розсилки.

PS! Якщо у вашої оболонки MinGW немає rsync, просто запустіть "mingw-get install msys-rsync", щоб додати її.

Оновлено 25 березня 2016 року:

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
Хенді Іраван

Так, це трохи сумно. Подивіться на мою оновлену відповідь вище - все ще сумно, але ситуація покращилася.
hansfn

Я пішов на другий варіант, і я закінчив папку в 2,17 ГБ, але все працює як шарм. Я встановив rsync за допомогою pacman -S rsync. Раніше я використовував CygWin, але я думаю, що MSYS2 приголомшливий, мені не потрібно запускати gui для встановлення додаткових пакетів.
Еденшо

Звіт про помилки, зазначений у цій відповіді, з тих пір закритий як "непоправний", проте я створив запит на те, щоб включити rsync до Git для Windows .
Скотт Стівенс

Будь-які посилання про те, як зробити варіант 1 або варіант 2? Я думаю, що у мене є Git для Windows SDK. Данно. Але припускаючи, що я це роблю, чи можу це отримати .. що тоді? Якщо ні, я не маю поняття, що це означає навіть встановити Git всередині MSYS2. Це означає, що мені потрібно видалити поточну установку Git. Чи втрачу я щось, наприклад налаштування чи функціональність, якщо це зроблю. Чи розірвуться най-посилання?
SherylHohman

2

Я припускаю, що git bashви насправді маєте на увазі msysgit, як "git for windows". Опція меню "Пуск" - git bashце пояснення використовуваного імені.

По-перше, ви вірно відхиляєте git як варіант. Одна з речей , мерзотник нічого НЕ робити добре обробляє двійкові файли - і ви б в кінцевому підсумку з величезним, роздутий сховище. Крім того, оскільки ви не будете обробляти зміни, використання накладних зусиль вражає мене як зайву.

По-друге, це звучить як питання, яке ви насправді задаєте: "Чи можу я використовувати rsync з msysgit / Windows?" Коротка відповідь - це не поза межами. msysgitнасправді лише командний рядок Windows з точки зору форми та функції. Однак, у вас є два варіанти: завантажити інструмент сторонніх виробників, щоб увімкнути rsync на вашій машині Windows ( Stack Overflow: Rsync для Windows ) або просто використовувати cygwin. Дійсно, вони мають однаковий результат - тож вирішувати, хто з них працює краще.


Я можу використовувати rsync з моєї оболонки cygwin, але не з msysgit. Я спробував скопіювати rsync.exe з папки bin cygwin в папку bins msysgit, але вона все ще не знаходить її. Чи є ще якийсь крок, який мені потрібно зробити, щоб встановити його там? Дивно, що я отримую помилку, що він не може знайти файл, замість того, щоб дати мені помилку, що одна із залежностей файлу відсутня. Дякую, Вілл
Вілл Ґант

Це просто неможливо. cygwin налаштовує середовище на базі GNU, включаючи бібліотеки, схожі на Linux, конфігурації тощо. 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

Якщо ви хочете мати двонаправлену синхронізацію, погляньте на унісон

Для інструмента синхронізації міжплатних каталогів існує синхронізація, яка працює на більшості платформ.


unison - це чудово, але вам доведеться встановлювати його на сервер - наприклад, 90% серверів готові до rsync. І ОП попросили rsync
pscheit

ОП запитала про rsync, але те, що ОП намагалася досягти, - це "бути ефективно синхронізованим між коробками", а унісон доступний у більшості репостів ...
shouldbeq931

Схоже, DeltaCopy недоступний для Windows 10. Може більше не підтримується?
SherylHohman

Важко сказати, чи працює Unison під керуванням Windows 10. Давно не було оновлень. Не згадується, які версії ОС Windows підтримує це програмне забезпечення. Є кілька проблем, які стосуються: Windows 10 github.com/bcpierce00/unison/…
SherylHohman

В якості інструменту крос платформної , щоб зберегти структуру каталогів в синхронізації цих днів, я запропонував би syncthing syncthing.net Однак в 2011 році ....
shouldbeq931
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.