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


13

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

DeltaCopy , cwrsynccygwin 을 시도 했습니다 . 내가 찾은 것으로부터 파일 길이가 길어지면이 모든 도구가 파일 복사를 거부합니다. 이것은 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.