scp 할때 용량 제한이 있나요? 2G이상 copy가 안됩니다.
글쓴이: jw0717 / 작성시간: 수, 2003/10/29 - 8:59오후
서버간에 파일을 copy 할려고 scp 를 이용할려고 하는데
scp -Cp rbs01.dbf username@hostname 하면
패스워드 물어보고 패스 워드 입력하면 다음과 같은 에러가 나오고 전송이 안됩니다.
rbs01.dbf: The user ID or group ID is to large to fit in the provided structure.
파일 사이즈는 4G 정도였고요.. 2G 정도 파일은 에러없이 복사가 되었습니다.
원래 ssh 가 2G 정도만 지원이 되는건지 위 에러처럼 USER나 GROUP의 구조(?) 때문인지
궁금합니다. 그리고 그 제한을 풀수있는 방법 또한 있는지도요.
아시는분 답변좀 부탁드리겠습니다.
Forums:
4G 데이터가 존재하는 시스템은 LINUX가 아니겠죠?LINUX에서
4G 데이터가 존재하는 시스템은 LINUX가 아니겠죠?
LINUX에서 현재 x86시스템이라면 최대 파일사이즈가 2G이라고 알고 있습니다.
메모리는 커널컴파일시 High Memory를 On시켜줌으로써 64Bits를 사용해서
그 이상의 용량도 확보할 수 있겠지만 File system은 현재 2G만 되는것으로 알고
있습니다.
------------------------------
좋은 하루 되세요.
[quote="codebank"]4G 데이터가 존재하는 시스템은 LINU
??
kernel 2.4 이후로는 그렇지 않습니다.
< / >
[ home@silver ]ls -lh backup.sql
-rw-r--r-- 1 root root 2.8G 10월 29 23:35 backup.sql
http://eunjaeim.com
2.2.x 대의 커널이나 2.1.3 이하의 glibc는 2GB이상의 파일
2.2.x 대의 커널이나 2.1.3 이하의 glibc는 2GB이상의 파일을 지원하지 않습니다.
이는 파일의 크기나 offset을 나타낼 때 long을 사용하기 때문입니다. 2^31B=2GB이 되지요. (signed니까 32가 아닌 31입니다.)
2.2.x 대의 커널에서 문제가 되는 것은 ext2fs가 아닌 VFS(Virtual File System)의 구현 부분이 문제가 되는 것으로 알고 있습니다.
2.2.x 버전에서도 LFS(Large File System) 커널 패치를 하면 2G를 넘는 파일을 사용할 수 있습니다.
----
It is essential, if man is not to be compelled to have recourse, as a last resort, to rebellion against tyranny and oppression, that human rights should be protected by the rule of law.
[Universal Declaration of Human Rights]
아~ 저런 문서가 있었군요... :oops: 아무도 답변을 달지 않
아~ 저런 문서가 있었군요... :oops:
아무도 답변을 달지 않아서 인터넷으로 이것저것 보다가 혹시 파일시스템의
문제가 아닐까하고 적어본건데 결국은 아니였군요.
(정보감사합니다.)
그럼 결국은 질문하신분의 추측대로 밖에는 생각할 수 없는 문제같은데...
어디 테스트할 서버가 없어서 제대로 답변을 드릴 수가 없군요.(단지 추측만 할뿐...)
다시검색하니 몇가지가 나오네요.
첫번째는 사용자의 ulimit를 검사해 보는것과(물론 한계를 두지는 않았겠죠.)
tar cf - foo | ssh other '(cd /where/ever ; tar xf -)'
이렇게 이용해보라는 조언을 써놓았고...두번째는 scp할때 옵션을 써보라는...
scp -C2 BigFile root@IP:/tmp/
옵션의 -2를 이용해보라고 조언을 했더군요.
이번에는 틀리지 않은 답변이 되었기 바랍니다... :-)
------------------------------
좋은 하루 되세요.
scp 에서 -C 옵션은 압축해서 복사하는것이지요. 이게 당장의 대안이
scp 에서 -C 옵션은 압축해서 복사하는것이지요. 이게 당장의 대안이 될 수 있을른지는 모르지만 결국 압축해도 2GB를 넘으면 역시 복사가 안될겁니다.
마지막 대안으로 한번 해보세요. 카피하고자하는 파일이 존재하는 서버를 NFS서버로 만들고 복사할 시스템에 서버의 디렉토리를 NFS로 마운트 한다음에 cp명령으로 복사를 수행해보십시오. 잘될겁니다.
제가 테스트한 최대 사이즈는 30GB였읍니다.
저번에 unzip이 안풀린다는 이야기도 있었지만, 2.4버전 이후의 커널에서는 2GB이상의 파일생성에 전혀(!) 문제가 없읍니다. 이건 ext3이건 xfs이건 상관없는 문제이고, 따라서 파일시스템이 2GB밖에 안된다는 것은 더이상 문제가 되지 않습니다.
현재 x86계열에서의 마지막 한계는 메모리를 한번에 4GB이상을 사용할 수 없다는 것입니다. 물리적인 메모리의 제한이 4GB이상이 안된다는 것이 아니라 하나의 application이 잡을 수 있는 최대의 메모리 상한이 4GB(2^32)이고 이중에서 커널이 2GB를 사용하고 user space가 사용할 수 있는 것이 2GB입니다. 물론 패치를 통해서 좀더 올릴 수는 있지만요.
이러한 문제는 리눅스 상에서 돌아가는 oracle과 같은 DB에서 치명적인 문제로 대두되었고 이를 해결하기 위해서 Oracle및 Redhat등은 별의별 꼼수(잘 안갈켜주지요...)를 사용해서 메모리 제한을 극복하고자 노력하고 있지요. 현재 레드햇 어드밴스드 서버 for Oracle에서는 도스의 far pointer 비슷한 방식으로 한계를 넘어가도록 하고 있나봅니다.
일단, NFS를 통해서 한번 복사를 시도해보시죠.
--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러
저도 scp로 큰 사이즈의 파일은 도중에 실패를 해서, 아예 분할압축을
저도 scp로 큰 사이즈의 파일은 도중에 실패를 해서, 아예 분할압축을 해서
전송하는 방법을 씁니다.
분할압축(650메가단위)예
압축해제
cat filename.tar.gz_* | tar -xvzf -
이렇게요... :?
아..커널2.2.x 문제였군요.
답변 감사드립니다.
전 scp나 문자 그대로.. user나 group때문인줄 알았습니다.
댓글 달기