Windows rsync, який підтримує довгі імена файлів, чи хороша альтернатива?


13

В даний час я rsync на хості Linux, щоб копіювати речі з Windows у мій Linux скриньку. Але я не можу копіювати файли з довгими іменами.

Я спробував DeltaCopy , cwrsync та cygwin . З того, що я знайшов там, усі ці інструменти відмовляються копіювати файли, коли довжина файлу стає довгою, здається, це приблизно десь 255 символів.

Це питання вирішується на форумах cwrsync тут, і воно, ймовірно, може бути вирішено десь у майбутньому, коли cygwin 1.7 вийде і підтримується UTF8. Існує навіть тест побудувати тут .

Мені не особливо комфортно користуватися тестовим складанням у виробничій системі. Я сподіваюся, що хтось знає про інший варіант rsync.

Як альтернатива rsync, чи знаєте ви про інший інструмент, що я можу скопіювати структуру каталогів на Linux з хоста Windows, який не матиме проблем із довгими або незвично названими файлами? Важливий біт - це те, що мені потрібен інструмент, який може легко працювати через тунель SSH. Деякі системи перебувають поза брандмауерами, і я вважаю, що SSH - це тунель, який мені дозволять використовувати.


FYI cwrsync випустила оновлення, засноване на cygwin 1.7, що підтримує довгі імена файлів! itefix.no/i2/node/12070
Zoredache

Відповіді:


6

Можливо, я не пропускаю суть, але ви розглядали можливість використання Robocopy в Windows. Він схожий на RSync, проте ви не можете запланувати його безпосередньо з програми.

Це можна подолати, записавши пакетний файл для копії, а потім створивши Заплановану задачу. Робокопія безкоштовна і надзвичайно міцна. Я часто використовую його для копіювання файлів між Linux та Windows за допомогою Samba та мережі, і можливість відновлення роботи Robocopy дуже потужна.


робокопія - це варіант, про який я розглядав, але він працює в неправильному напрямку (натискання від win to lin), я хотів витягнути з Windows на Linux. Я підозрюю, що мені, можливо, доведеться піти в цьому напрямку, якщо я не можу знайти нічого кращого.
Zoredache

5

Ага! Ви можете використовувати субст із rsync.

Якщо у вас є глибоке дерево каталогів d: \ very \ long \ file \ n \ ame \ etc \ etc, тоді експеримент виявить, що ви можете замінити X: to d: \ very \ long \ file \ name \ etc., а потім rsync до та від / cygdrive / x / що завгодно. Це працює як на клієнтському, так і на серверному кінці.

Тепер, поки ви можете використовувати стратегічні субстрати, щоб зменшити довжину імен файлів, я не знаю, чи це дозволяє вам обійти межу 260 символів. Це також може бути не дуже зручно. Варто спробувати, хоча.

Джон Ренні.

---- 8 <----

Дивіться http://www.ratsauce.co.uk/notablog/LongFilenames.asp щодо моїх міркувань про довгі імена файлів.

Я не знаю жодного способу отримати префікс \\? \ Cygwin, і очевидно, що поточна версія Cygwin не використовує префікс внутрішньо. Імовірно, вони звертаються до цього в новій версії, і тому він буде підтримувати імена довжиною понад 260 символів. Я використовую ryync Cygwin всюди, так як ви, я з нетерпінням чекаю виходу.

Є деякі інші проблеми з Cygwin rsync. Це створює безлад ACL, якщо ви не вказали cygwin = nontsec, і він, як правило, зависає у дуже великих каталогах. У моєму списку речей, які потрібно зробити перед смертю, - це написати рідну версію Windows rsync, яка не матиме цих проблем. Я вважаю, що це було зроблено, але лише як комерційні версії, а не публічні.

JR


Здається, Rsync зависає у великих каталогах, оскільки він повинен спочатку прочитати всі файли. Проблема полягає в тому, що Windows спочатку зчитує всі файли, потім починає rsync. Сканування каталогу може зайняти кілька хвилин, залежно від кількості файлів.
Ryaner

Це більше не стосується rsync 3.0. Тепер він надсилає додатковий список файлів, щоб він міг швидше розпочати надсилання файлів.
James Sneeringer

2

Я б запропонував спробувати Unison http://www.cis.upenn.edu/~bcpierce/unison/

Це дуже цікава альтернатива rsync, оскільки вона також може забезпечити двонаправлену синхронізацію (що rsync не в змозі зробити). Я вже успішно використовував її на двох віртуальних машинах і був дуже задоволений результатами.

Але що стосується назви файлів, то я не знаю, чи працює він як хочеш.

З офіційного веб-сайту:

Unison - це інструмент синхронізації файлів для Unix та Windows. Це дозволяє зберігати дві репліки колекції файлів і каталогів на різних хостах (або різних дисках на одному хості), змінювати їх окремо і потім оновлювати, поширюючи зміни кожної репліки на інші.


Ви використовували його з доріжками довжиною до 250 символів? Здається, єдиний спосіб отримати це на Windows - це через cygwin, що, на мою думку, означає, що він матиме саме таку проблему, яку я маю з rsync cygwin.
Zoredache

Я не перевіряв довгий шлях, але бінарні файли Unison для Windows будуються за допомогою cygwin.dll (він в комплекті з бінарними файлами, не потрібно встановлювати cygwin), тому він може працювати коректно. Спробуйте :)
Олів'є Якемет

2

Лише зауважте, що я зіткнувся з тією самою проблемою (обмеження до-1,7 cygwin) і знайшов тут робочу збірку cwrsync з cygwin 1.7:

http://www.doering-thomas.de/page.php?seite=1&sub=6&lang=en#rsync

(Оригінальне посилання знайдено на форумах cwrsync)

Не зовсім офіційна збірка, але це вирішило мої проблеми із комірками :)


1

http://lists.samba.org/archive/rsync/2009-March/022955.html

http://www.okisoft.co.jp/esc/utf8-cygwin/ Має шар UTF8, який має побічний ефект збільшення можливого розміру шляху. За словами його автора, якщо ви хочете використовувати більше символів, ви можете збільшити константу в патчі. Це здається ще більш хакерським.

Напевно, не найкраща ставка для віддаленої синхронізації, але це Windows rsync, який стверджує, що підтримує довші імена файлів.


Ця публікація мене трохи хвилює ( cygwin.com/ml/cygwin/2006-05/msg00068.html ) - "В основному, є 930-латний патч, більшість з яких є новим. FWICS, він може не охоплювати всіх місць, де Unicode може знадобитися конверсія (зокрема, надсилання Unicode через текстовий модуль дуже ймовірно невдало вийде з ладу) "
Zoredache

0

Отже, якщо інструменти погані в Windows, чи є спосіб скористатися інструментом Linux?

З ssh - sshfs ?

Без ssh - використовувати VPN та монтувати як SMB?

Будь-який спосіб дозволить вам використовувати більш працездатний клієнт Linux rsync проти файлової системи. Я цього не робив з 10 ГБ даних, так що YMMV. :)


Я намагаюся витягнути файли з Windows до моєї скриньки Linux. Крім того, я дійсно не хочу створювати архів, оскільки я розмовляю з великою кількістю даних 10 ГБ +, які хочу синхронізувати щотижня. Якщо я буду архів, я не отримаю користі від поступових оновлень.
Зоредаче

Гаразд, переглянута відповідь.
Cawflands

0

Це не буде робити великих файлових структур, але для відносно невеликих наборів даних з довгими іменами ви можете розглянути щось на зразок 7-Zip для створення архіву, який потім може перенести rsync. Ви сказали, що вам потрібно перенести дані з серверів Windows на сервер Linux. Якщо у вас є доступ до оболонки, архівуйте потрібні вам дані в контейнері (7-zip), перенесіть контейнер і розгорніть його, коли він потрапить на сервер. Це підштовхує довгу проблему з іменем файлів до архіватора, для якого я вважаю, що є краща підтримка та інструменти, що не підтримують Cygwin.


0

Щоб не втратити портативність, я б рекомендував вам залишитися з rsync і спробувати вирішити обмеження 255. Це обмеження більше не знаходиться в Windows і входить до коду RSYNC - насправді ліміт для Windows зараз становить близько 2048 року (якщо я добре пам’ятаю).

Я впевнений, що немає інших портів rsync, ніж зазначений вами, і я пропоную вам скористатися тестовою версією та повідомити про будь-які помилки, які ви можете знайти.

Якщо ви не заперечуєте з використанням FTP, ви можете спробувати LFTP - він має дуже хорошу дзеркальну функцію, але він не порівнює з rsync, коли мова йде про резервне копіювання / синхронізація.


0

Я зламав разом сценарій, який може тимчасово перейменовувати файли чи каталоги зі скороченими іменами, щоб rsync (та інші програми) могли продовжуватись. Ви можете використовувати це як частину ланцюжка інструментів, яку ви використовуєте для копіювання файлів з Linux у Windows (rsync чи іншим чином). Я не знаю, що ви маєте на увазі під "незвичним", тому, можливо, це стосується лише частини ваших вимог. Будь ласка, дайте мені знати, чи це вам корисно.

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