긴 파일 이름 또는 좋은 대안을 지원하는 Windows rsync?


13

현재 Linux 호스트에서 rsync를 사용하여 Windows에서 Linux 상자로 항목을 복사합니다. 그러나 이름이 긴 파일은 복사 할 수 없습니다.

DeltaCopy , cwrsync 및 cygwin 을 시도 했습니다 . 내가 찾은 것으로부터 파일 길이가 길어지면이 모든 도구가 파일 복사를 거부합니다. 이것은 255 자 정도 인 것 같습니다.

이 문제는 여기서 cwrsync 포럼 에서 해결되었으며 cygwin 1.7이 나오고 UTF8이 지원 될 때마다 언젠가 수정 될 수 있습니다. 여기에도 테스트 빌드가 있습니다 .

프로덕션 시스템에서 테스트 빌드를 사용하는 것이 특히 편안하지 않습니다. 누군가 다른 rsync 옵션을 알고 있기를 바랍니다.

rsync의 대안으로, 길거나 비정상적으로 명명 된 파일에 문제가없는 Windows 호스트에서 Linux의 디렉토리 구조를 복사 할 수있는 다른 도구에 대해 알고 있습니까? 중요한 점은 SSH 터널에서 쉽게 작동 할 수있는 도구가 필요하다는 것입니다. 일부 시스템은 방화벽을 넘어서며 SSH는 내가 사용할 수있는 터널이라고 생각합니다.


참고로 cwrsync는 긴 파일 이름을 지원하는 cygwin 1.7을 기반으로하는 업데이트를 출시했습니다! itefix.no/i2/node/12070
— Zoredache

답변:


6

요점을 놓칠 수 있지만 Windows에서 Robocopy 사용을 고려한 적이 있습니다 . RSync와 비슷하지만 응용 프로그램에서 직접 예약 할 수 없습니다.

복사본에 대한 배치 파일을 작성한 다음 예약 된 작업을 만들어이 문제를 해결할 수 있습니다. Robocopy는 무료이며 매우 강력합니다. Samba와 네트워크를 사용하여 Linux와 Windows간에 파일을 복사하는 데 종종 사용하며 Robocopy의 재개 기능은 실제로 강력합니다.


robocopy는 내가 고려한 옵션이지만 잘못된 방향으로 작동합니다 (win에서 lin으로 푸시) .Linux의 Windows에서 가져오고 싶었습니다. 더 좋은 것을 찾을 수 없다면이 방향으로 가야 할 것 같습니다.
— Zoredache

5

아하! rsync와 함께 subst를 사용할 수 있습니다.

깊은 디렉토리 트리 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에 다른 문제가 있습니다. cygwin = nontsec을 지정하지 않으면 ACL이 엉망이되어 매우 큰 디렉토리에 매달리는 경향이 있습니다. 죽기 전에해야 할 일 목록에는 이러한 문제가없는 기본 Windows 버전의 rsync를 작성하는 것입니다. 나는 이것이 완료되었다고 생각하지만 공개 버전이 아닌 상용 버전으로 만 사용됩니다.

JR


Rsync는 모든 파일을 먼저 읽어야하므로 큰 디렉토리에서 정지 된 것으로 보입니다. 문제는 Windows가 먼저 모든 파일을 읽은 다음 rsync가 시작된다는 것입니다. 몇 개의 파일이 있는지에 따라 디렉토리를 검색하는 데 몇 분이 걸릴 수 있습니다.
— Ryaner

이것은 더 이상 rsync 3.0의 경우에는 해당되지 않습니다. 이제 증분 파일 목록을 보내므로 파일을 더 빨리 보낼 수 있습니다.
— James Sneeringer

2

나는 당신이 Unison http://www.cis.upenn.edu/~bcpierce/unison/ 을 시도하는 것이 좋습니다

rsync가 수행 할 수없는 양방향 동기화를 제공 할 수 있기 때문에 rsync의 매우 흥미로운 대안 입니다. 이미 2 개의 가상 머신에서 성공적으로 사용했으며 결과에 매우 만족했습니다.

그러나 긴 파일 이름과 관련하여 원하는대로 작동하는지 알 수 없습니다.

공식 웹 사이트에서 :

Unison은 Unix 및 Windows 용 파일 동기화 도구입니다. 파일 및 디렉토리 모음의 두 복제본을 다른 호스트 (또는 동일한 호스트의 다른 디스크)에 저장하고 개별적으로 수정 한 다음 각 복제본의 변경 사항을 다른 복제본으로 전파하여 최신 상태로 유지할 수 있습니다.


250 자보다 긴 경로와 함께 사용 했습니까? 그것은 Windows에서 그것을 얻는 유일한 방법은 cygwin을 통한 것입니다. 나는 cygwin rsync와 똑같은 문제가 있음을 의미합니다.
— Zoredache

긴 경로를 테스트하지는 않았지만 Windows 용 Unison 바이너리는 cygwin.dll (바이너리와 번들로 제공되므로 cygwin을 설치할 필요가 없음)을 사용하여 빌드되므로 제대로 작동 할 수 있습니다. 그것을 시도 :)
— 올리비에 Jaquemet

2

내가 똑같은 문제 (1.7 이전 cygwin의 한계)에 빠져서 cygwin 1.7과 함께 작동하는 cwrsync 빌드를 찾았다는 점에 주목하십시오.

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, 유니 코드가있는 모든 장소를 다루지는 않을 수 있습니다 변환은 "(특히, 텍스트 모드 파이프를 통해 유니 코드를 전송하는 것은 매우 가능성이 화려 실패)이 필요할 수있다
— Zoredache

0

그렇다면 Windows에서 도구가 나쁜 경우 Linux 도구를 사용하는 방법이 있습니까?

ssh- sshfs로 ?

SSH없이-VPN을 사용하고 SMB로 마운트?

어느 쪽이든 파일 시스템에 대해 더 유능한 Linux rsync 클라이언트를 사용할 수 있습니다. 나는 10GB의 데이터로 이것을하지 않았으므로 YMMV. :)


창에서 파일을 Linux 상자로 가져 오려고합니다. 또한 매주 동기화하려는 10GB 이상의 데이터를 많이 이야기하고 있기 때문에 아카이브를 만들고 싶지 않습니다. 아카이브를 빌드하면 증분 업데이트의 이점을 얻지 못합니다.
— Zoredache

좋아, 답을 수정했다.
— 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 또는 기타)로 파일을 복사하는 데 사용하는 툴 체인의 일부로이를 사용할 수 있습니다. 나는 당신이 "비정상적"이라는 것이 무엇을 의미하는지 알지 못하므로 아마도 요구 사항의 일부만을 다루고있을 것입니다. 도움이 될 경우 알려주십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.