ssh를 통해 대용량 (8GB) 파일 전송 중지했습니다. sftp> put matlab.iso Uploading matlab.iso to /home/x/matlab.iso matlab.iso

SCP로 시도했지만 “네거티브 파일 크기”라고 표시되어 있습니다.

>scp matlab.iso xxx@xxx:/matlab.iso
matlab.iso: Negative file size

또한 SFTP를 사용하여 2GB의 파일이 전송 될 때까지 정상적으로 작동 한 다음 중지했습니다.

sftp> put matlab.iso
Uploading matlab.iso to /home/x/matlab.iso
matlab.iso                                           -298% 2021MB -16651.-8KB/s   00:5d
o_upload: offset < 0

무엇이 잘못 될 수 있는지 아십니까? SCP와 SFTP가 2GB보다 큰 파일을 지원하지 않습니까? 그렇다면 SSH를 통해 더 큰 파일을 어떻게 전송할 수 있습니까?

대상 파일 시스템은 ext4입니다. Linux 배포판은 CentOS 6.5입니다. 파일 시스템에는 현재 (액세스 가능한) 큰 파일이 있습니다 (최대 100GB).



답변

원래 문제 (OP 질문에 대한 모든 의견을 읽은 결과)은 scp64 비트 시스템 의 실행 파일이 32 비트 응용 프로그램이라는 것이 었습니다. “큰 파일 지원”으로 컴파일되지 않은 32 비트 응용 프로그램 은로 제한된 탐색 포인터로 끝납니다 2^32 =~ 4GB.

scp다음 file명령 을 사용하여 32 비트 인지 알 수 있습니다 .

file `which scp`

대부분의 최신 시스템에서는 64 비트이므로 파일 잘림이 발생하지 않습니다.

$ file `which scp`
/usr/bin/scp: ELF 64-bit LSB  shared object, x86-64 ...

32- 응용 프로그램은 여전히 ​​”큰 파일”을 지원할 수 있어야하지만이 경우에는 그렇지 않은 큰 파일 지원으로 소스에서 컴파일되어야합니다.

권장 솔루션은 앱이 기본적으로 64 비트로 컴파일되는 전체 표준 64 비트 배포를 사용하는 것입니다.


답변

Rsync 는 어떤 이유로 인해 중단 된 전송을 계속할 수 있기 때문에 ssh를 통해 큰 파일을 전송하는 데 매우 적합합니다. 해시 함수를 사용하여 동일한 파일 블록을 감지하므로 계속 기능은 매우 강력합니다.

sftp/ scp버전이 큰 파일을 지원하지 않는 것은 놀라운 일입니다. 32 비트 바이너리를 사용하더라도 LFS 지원 은 현재 매우 표준 적이어야합니다.


답변

SCP와 SFTP의 파일 크기 제한에 대해 잘 모르겠지만 split 문제를 해결해 볼 수도 있습니다.

split -b 1G matlab.iso

기본적으로 이름이 1 GiB 파일 1 개가 생성됩니다 xaa, xab, xac, .... 그런 다음 scp를 사용하여 파일을 전송할 수 있습니다.

scp xa* xxx@xxx:

그런 다음 원격 시스템에서 cat을 사용하여 원래 파일을 다시 작성하십시오.

cat xa* > matlab.iso

물론이 해결 방법의 처벌은 로컬 및 원격 시스템에 필요한 추가 디스크 공간뿐만 아니라 분할 및 고양이 작업에 걸리는 시간입니다.


답변