Windows rsync, który obsługuje długie nazwy plików, czy dobra alternatywa?


13

Obecnie rsync na hoście Linux, aby skopiować rzeczy z systemu Windows do mojego Linux-a. Ale nie mogę kopiować plików o długich nazwach.

Próbowałem DeltaCopy , cwrsync i cygwin . Z tego, co tam znalazłem, wszystkie te narzędzia odmawiają kopiowania plików, gdy długość pliku staje się długa, wydaje się, że jest to około 255 znaków.

Ten problem jest rozwiązywany na forach cwrsync tutaj i podobno może zostać rozwiązany w przyszłości, kiedy wyjdzie cygwin 1.7 i obsługiwany jest UTF8. Jest nawet build testowy tutaj .

Nie czuję się szczególnie komfortowo, korzystając z testowej wersji systemu produkcyjnego. Mam nadzieję, że ktoś wie o innej opcji rsync.

Czy jako alternatywa dla rsync znasz inne narzędzie, które mogę skopiować strukturę katalogów w systemie Linux z hosta systemu Windows, który nie będzie miał problemów z długimi lub nietypowymi nazwami plików? Ważne jest to, że potrzebuję narzędzia, które może z łatwością pracować w tunelu SSH. Niektóre systemy są poza zaporami ogniowymi i uważam, że SSH to tunel, z którego będę mógł korzystać.


FYI cwrsync wydała aktualizację opartą na cygwin 1.7, która obsługuje długie nazwy plików! itefix.no/i2/node/12070
Zoredache

Odpowiedzi:


6

Być może brakuje mi tego, ale zastanawiałeś się nad użyciem Robocopy w systemie Windows. Jest podobny do RSync, jednak nie można go zaplanować bezpośrednio z aplikacji.

Można temu zaradzić, pisząc plik wsadowy dla kopii, a następnie tworząc Zaplanowane Zadanie. Robocopy jest darmowy i wyjątkowo solidny. Często używam go do kopiowania plików między Linuksem a Windowsem przy użyciu Samby i sieci, a możliwość wznawiania Robocopy jest naprawdę potężna.


robocopy jest opcją, którą rozważałem, ale działa w złym kierunku (push od win do lin), chciałem ściągnąć z Windowsa na Linuksie. Podejrzewam, że być może będę musiał pójść w tym kierunku, jeśli nie znajdę nic lepszego.
Zoredache,

5

Aha! Możesz użyć subst z rsync.

Jeśli masz głębokie drzewo katalogów d: \ very \ long \ file \ n \ ame \ etc \ etc, eksperyment pokazuje, że możesz zastąpić X: do d: \ very \ long \ file \ name \ etc, a następnie rsync do i z / cygdrive / x / cokolwiek. Działa to zarówno po stronie klienta, jak i po stronie serwera.

Teraz, gdy możesz używać strategicznych podmień, aby skrócić długość nazw plików, nie wiem, czy to pozwoli ci ominąć limit 260 znaków. Może to również nie być zbyt wygodne. Warto jednak spróbować.

John Rennie.

---- 8 <----

Zobacz http://www.ratsauce.co.uk/notablog/LongFilenames.asp dla moich wędrówek na długich nazwach plików.

Nie znam żadnego sposobu na uzyskanie przedrostka \\? \ W Cygwin i oczywiście obecna wersja Cygwin nie używa tego przedrostka wewnętrznie. Prawdopodobnie zajmują się tym w nowej wersji i dlatego obsługuje nazwy dłuższe niż 260 znaków. Używam rsync Cygwin w całym miejscu, więc podobnie jak ty z niecierpliwością czekam na wydanie.

Istnieją inne problemy z rsync Cygwin. Robi bałagan list ACL, chyba że podasz cygwin = nontsec, i ma tendencję do zawieszania się na bardzo dużych katalogach. Na mojej liście rzeczy do zrobienia przed śmiercią jest napisanie natywnej wersji rsync dla Windows, która nie będzie miała tych problemów. Wierzę, że tak się stało, ale tylko w wersjach komercyjnych, a nie w domenie publicznej.

JR


Rsync wydaje się zawieszać na dużych katalogach, ponieważ najpierw musi odczytać wszystkie pliki. Problem polega na tym, że Windows najpierw czyta wszystkie pliki, a następnie uruchamia się rsync. Skanowanie katalogu może zająć kilka minut w zależności od liczby plików.
Ryaner,

Nie dotyczy to już rsync 3.0. Teraz wysyła przyrostową listę plików, dzięki czemu może rozpocząć wysyłanie plików wcześniej.
James Sneeringer

2

Sugeruję wypróbowanie Unison http://www.cis.upenn.edu/~bcpierce/unison/

Jest to bardzo interesująca alternatywa dla rsync, ponieważ może również zapewniać dwukierunkową synchronizację (czego rsync nie jest w stanie wykonać). Użyłem go już z powodzeniem na 2 maszynach wirtualnych i byłem bardzo zadowolony z rezultatów.

Ale jeśli chodzi o długą nazwę pliku, nie wiem, czy działa tak, jak chcesz.

Z oficjalnej strony:

Unison to narzędzie do synchronizacji plików dla systemów Unix i Windows. Umożliwia przechowywanie dwóch replik kolekcji plików i katalogów na różnych hostach (lub różnych dyskach na tym samym hoście), modyfikowanie ich osobno, a następnie aktualizowanie poprzez propagowanie zmian w każdej replice do drugiej.


Czy używałeś go ze ścieżkami dłuższymi niż 250 znaków? Wydaje się, że jedynym sposobem na uzyskanie go w systemie Windows jest cygwin, co, jak sądzę, oznacza, że ​​będzie miał dokładnie taki sam problem, jaki mam z cygwin rsync.
Zoredache,

Nie testowałem długiej ścieżki, ale pliki binarne Unison dla systemu Windows są budowane przy użyciu cygwin.dll (jest w pakiecie z plikami binarnymi, nie trzeba instalować cygwin), dlatego może działać poprawnie. Spróbuj :)
Olivier Jaquemet,

2

Tylko uwaga, że ​​napotkałem ten sam problem (ograniczenia cygwin w wersji wcześniejszej niż 1.7) i znalazłem działającą wersję cwrsync z cygwin 1.7 tutaj:

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

(Oryginalny link znaleziony na forach cwrsync)

Nie do końca oficjalna wersja, ale rozwiązało to problemy z charsetem :)


1

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

http://www.okisoft.co.jp/esc/utf8-cygwin/ Ma warstwę UTF8, która ma efekt uboczny polegający na zwiększeniu możliwego rozmiaru ścieżki. Według autora, jeśli chcesz użyć więcej znaków, możesz zwiększyć stałą w łatce. To wydaje się jeszcze bardziej hackerskie.

Prawdopodobnie nie jest to najlepszy wybór do zdalnej synchronizacji, ale jest to Windows rsync, który twierdzi, że obsługuje dłuższe nazwy plików.


Ten post trochę mnie martwi ( cygwin.com/ml/cygwin/2006-05-05/msg00068.html ) - „Zasadniczo jest łatka 930 linii, z których większość jest nowa. FWICS, może nie obejmować wszystkich miejsc, w których Unicode może być konieczna konwersja (w szczególności wysłanie Unicode przez potok trybu tekstowego najprawdopodobniej zakończy się spektakularnym niepowodzeniem) ”
Zoredache,

0

Więc jeśli narzędzia są złe w systemie Windows, czy istnieje sposób na użycie narzędzia Linux?

Z ssh - sshfs ?

Bez ssh - użyć VPN i zamontować jako SMB?

Tak czy inaczej pozwoli ci użyć bardziej wydajnego klienta Linux rsync przeciwko systemowi plików. Nie zrobiłem tego z 10 GB danych, więc YMMV. :)


Próbuję wyciągnąć pliki z okien do mojego Linux-a. Ponadto naprawdę nie chcę budować archiwum, ponieważ mówię dużo danych 10 GB +, które chcę synchronizować co tydzień. Jeśli zbuduję archiwum, nie będę mógł korzystać z aktualizacji przyrostowych.
Zoredache

OK, poprawiona odpowiedź.
Cawflands

0

Nie zrobi to dużych struktur plików, ale w przypadku stosunkowo małych zestawów danych o długich nazwach można rozważyć użycie czegoś takiego jak 7-Zip do utworzenia archiwum, które rsync mógłby następnie przesłać. Powiedziałeś, że musisz pobrać dane z serwerów Windows na serwer Linux. Jeśli masz dostęp do powłoki, zarchiwizuj potrzebne dane w kontenerze (7-zip) przenieś kontener i rozszerz go, gdy dotrze do serwera. Spycha to problem długiej nazwy pliku do archiwizatora, dla którego uważam, że jest lepsza obsługa i narzędzia inne niż Cygwin.


0

Aby nie stracić przenośności, polecam pozostać przy rsync i spróbować rozwiązać ograniczenie 255. To ograniczenie nie występuje już w systemie Windows i jest zawarte w kodzie RSYNC - w rzeczywistości limit w systemie Windows wynosi obecnie około 2048 (o ile dobrze pamiętam).

Jestem prawie pewien, że nie ma innych portów rsync niż te określone przez ciebie i sugeruję, abyś użył wersji testowej i zgłosił wszelkie znalezione błędy.

Jeśli nie masz nic przeciwko korzystaniu z FTP, możesz wypróbować LFTP - ma on bardzo dobrą funkcję kopii lustrzanej, ale nie porównuje się z rsync, jeśli chodzi o tworzenie kopii zapasowych / synchronizację.


0

I hacked razem skrypt , który może tymczasowo zmieniać nazwy plików lub katalogów z krótszych nazw tak, że rsync (i inne programy) można kontynuować. Możesz użyć tego jako części łańcucha narzędzi, którego używasz do kopiowania plików z systemu Linux na Windows (rsync lub w inny sposób). Nie wiem, co rozumiesz przez „niezwykły”, więc być może dotyczy to tylko części twoich wymagań. Daj mi znać, jeśli Ci to pomoże.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.