В настоящее время я rsync на хосте Linux, чтобы скопировать вещи из Windows на мой Linux-ящик. Но я не могу копировать файлы с длинными именами.
Я пробовал DeltaCopy , cwrsync и cygwin . Из того, что я обнаружил, все эти инструменты отказываются копировать файлы, когда длина файла становится большой, кажется, что это где-то около 255 символов.
Эта проблема решается на форумах cwrsync здесь, и, возможно, она может быть исправлена когда-нибудь в будущем, когда выйдет cygwin 1.7 и поддерживается UTF8. Существует даже тест построить здесь .
Мне не особенно удобно использовать тестовую сборку на производственной системе. Я надеюсь, что кто-то знает о другом варианте rsync.
В качестве альтернативы rsync вы знаете другой инструмент, который позволяет копировать структуру каталогов в Linux с хоста Windows, у которого не будет проблем с файлами с длинными или необычно именованными именами? Важным моментом является то, что мне нужен инструмент, который может легко работать через туннель SSH. Некоторые системы находятся за пределами брандмауэров, и я считаю, что SSH - это туннель, который мне будет разрешено использовать.
источник
Ответы:
Возможно, я упускаю суть, но вы рассматривали возможность использования Robocopy в Windows. Это похоже на RSync, но вы не можете запланировать его непосредственно из приложения.
Этого можно избежать, написав пакетный файл для копии, а затем создав запланированное задание. Robocopy является бесплатным и чрезвычайно надежным. Я часто использую его для копирования файлов между Linux и Windows, используя Samba и сеть, и возможность возобновления Robocopy действительно мощная.
источник
Ага! Вы можете использовать Sub с rsync.
Если у вас есть глубокое дерево каталогов d: \ very \ long \ file \ n \ ame \ etc \ etc, то эксперимент показывает, что вы можете заменить X: на d: \ very \ long \ file \ name \ etc, а затем выполнить rsync для и из / cygdrive / x / что угодно. Это работает как на стороне клиента, так и на стороне сервера.
Теперь, когда вы можете использовать стратегические элементы для сокращения длины имен файлов, я не знаю, позволяет ли это обойти ограничение в 260 символов. Это также может быть не очень удобно. Хотя стоит попробовать.
Джон Ренни
---- 8 <----
См. Http://www.ratsauce.co.uk/notablog/LongFilenames.asp, чтобы узнать о длинных именах файлов.
Я не знаю ни одного способа получить префикс \\? \ Для Cygwin, и, очевидно, текущая версия Cygwin не использует префикс для внутреннего использования. Предположительно они решают эту проблему в новой версии, и поэтому он будет поддерживать имена длиннее 260 символов. Я использую Cygwin rsync повсюду, поэтому, как и вы, я с нетерпением жду релиза.
Есть и другие проблемы с Cygwin rsync. Он создает беспорядок в ACL, если вы не укажете cygwin = nontsec, и он склонен зависать на очень больших каталогах. В моем списке вещей, которые нужно сделать перед тем, как я умру, я напишу версию rsync для Windows, которая не будет иметь таких проблем. Я считаю, что это было сделано, но только как коммерческие версии, а не как общедоступные.
JR
источник
Я бы посоветовал вам попробовать Unison http://www.cis.upenn.edu/~bcpierce/unison/
Это очень интересная альтернатива rsync, поскольку она также может обеспечить двунаправленную синхронизацию (что rsync не может сделать). Я уже успешно использовал его на 2 виртуальных машинах и был очень доволен результатами.
Но что касается длинного имени файла, я не знаю, работает ли он так, как вы хотите.
С официального сайта:
источник
Просто обратите внимание, что я столкнулся с той же проблемой (ограничения до 1.7 cygwin) и нашел рабочую сборку cwrsync с cygwin 1.7 здесь:
http://www.doering-thomas.de/page.php?seite=1&sub=6&lang=en#rsync
(Оригинальная ссылка найдена на форумах cwrsync)
Не совсем официальная сборка, но это решило мои проблемы с кодировкой :)
источник
http://lists.samba.org/archive/rsync/2009-March/022955.html
http://www.okisoft.co.jp/esc/utf8-cygwin/ Имеет слой UTF8, у которого есть побочный эффект увеличения возможного размера пути. По словам его автора, если вы хотите использовать больше символов, вы можете увеличить константу в патче. Это кажется еще более хакерским.
Вероятно, не лучший выбор для удаленной синхронизации, но это Windows rsync, которая утверждает, что поддерживает более длинные имена файлов.
источник
Итак, если инструменты плохие в Windows, есть ли способ использовать инструмент Linux?
С помощью ssh - sshfs ?
Без ssh - использовать VPN и монтировать как SMB?
В любом случае вы сможете использовать более способный клиент rsync для Linux в файловой системе. Я не сделал этого с 10 ГБ данных, поэтому YMMV. :)
источник
Это не будет работать с большими файловыми структурами, но для относительно небольших наборов данных с длинными именами вы можете использовать что-то вроде 7-Zip для создания архива, который rsync может затем передать. Вы сказали, что вам нужно перенести данные с серверов Windows на сервер Linux. Если у вас есть доступ к оболочке, заархивируйте необходимые данные в контейнере (7-zip), перенесите контейнер и разверните его, когда он попадет на сервер. Это выдвигает проблему длинных имен файлов на архиватор, для которого, я полагаю, есть лучшая поддержка и инструменты, отличные от Cygwin.
источник
Чтобы не потерять мобильность, я бы порекомендовал вам остаться с rsync и попытаться устранить ограничение 255. Это ограничение больше не в Windows, а в коде RSYNC - фактически ограничение для Windows сейчас составляет около 2048 (если я хорошо помню).
Я уверен, что нет никаких других портов rsync, кроме указанных вами, и я предлагаю вам использовать тестовую версию и сообщать о любых найденных ошибках.
Если вы не возражаете против использования FTP, вы можете попробовать LFTP - у него есть очень хорошая функция зеркалирования, но он не сравнивается с rsync, когда дело доходит до резервного копирования / синхронизации.
источник
Я взломал сценарий, который может временно переименовывать файлы или каталоги с более короткими именами, чтобы rsync (и другие программы) могли продолжаться. Вы можете использовать это как часть цепочки инструментов, которую вы используете для копирования файлов из Linux в Windows (rsync или иным образом). Я не знаю, что вы подразумеваете под «необычным», так что, возможно, это только часть ваших требований. Пожалуйста, дайте мне знать, если это полезно для вас.
источник