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)이 있습니다.
답변1
SCP 및 SFTP의 파일 크기 제한이 확실하지 않지만 분할을 사용하여 문제를 해결할 수 있습니다.
split -b 1G matlab.iso
그러면 이름이 default 인 1GiB 파일이 생성됩니다 xaa, xab, xac, ...
. 그런 다음 scp를 사용하여 파일을 전송할 수 있습니다.
scp xa* xxx@xxx:
그런 다음 원격 시스템에서 cat을 사용하여 원본 파일을 다시 만듭니다.
cat xa* > matlab.iso
물론 이 해결 방법의 비용은 분할 및 Cat 작업에 소요되는 시간뿐 아니라 로컬 및 원격 시스템 모두에 필요한 추가 디스크 공간입니다.
답변2
답변3
원래 문제(OP 질문에 대한 모든 설명을 읽어 본 결과)는 scp
64비트 시스템의 실행 파일이 32비트 응용 프로그램이라는 것입니다. 컴파일되지 않은 32비트 애플리케이션"대용량 파일 지원"최종 검색 포인터는 2^32 =~ 4GB
.
scp
다음 명령을 사용하여 32비트인지 확인할 수 있습니다 file
.
file `which scp`
대부분의 최신 시스템에서는 64비트이므로 파일 잘림이 발생하지 않습니다.
$ file `which scp`
/usr/bin/scp: ELF 64-bit LSB shared object, x86-64 ...
32비트 응용 프로그램은 여전히 "대형 파일"을 지원할 수 있지만 대용량 파일을 지원하는 소스에서 컴파일해야 하는데 이 경우에는 확실히 그렇지 않습니다.
권장되는 해결 방법은 애플리케이션이 기본적으로 64비트용으로 컴파일되는 전체 표준 64비트 배포판을 사용하는 것입니다.