[완료]cp로 카피하니 -bash: /bin/cp: Argument list too long
글쓴이: ahsan / 작성시간: 목, 2007/08/30 - 11:27오전
안녕하세요.
두대의 기계 사이에 nfs로 연결하여 파일복사를 해야 하는데
화일의 갯수가 4만개 정도 밖에 안되는데도 cp를 사용하면
-bash: /bin/cp: Argument list too long
이라는 메시지가 나오고 아무런 일이 안 일어납니다.
sysctl.conf에 fs.file-max=1000000
ulimit -n 1000000로 해도 안됩니다.
왜 이런일이 일어나는 걸까요?
cp가 처리할 수 있는 화일의 숫자는 몇개 인가요?
답변 부탁드립니다
Forums:
디렉토리 내에 있는
디렉토리 내에 있는 파일을 모두 복사하신다면 아래 같은 방법으로는 안되나요?
--
perl -e's@@JEON Myoung-jin@;sub man{s| _|her e|}
sub see{s;^;Just;;u;s;e ;Perl ;;to;print$_,$/}$uperMan=M;
s=^....=U are not=;s~$uperMan~~;&admitIt;s=U are = A=;s|young|_|;&man;
sub admitIt{say;ye;s!-\w+! Hacker!};see U'
$Myoungjin_JEON=@@=qw^rekcaH lreP rehtonA tsuJ^;$|++;{$i=$like=pop@@;unshift@@,$i;$~=18-length$i;print"\r[","~"x abs,(scalar reverse$i),"~"x($~-abs),"]"and select$good,$day,$mate,1/$~for 0..$~,-$~+1..-1;redo}
감사합니다.
전체 복사가 아니라 7일 이전에 생성된 것들만 복사하는 경우입니다. 어쨌던 답변은 감사합니다.
cp 가 처리할 수 있는
cp 가 처리할 수 있는 파일 갯수는 잘 모르겠는데.. 비슷한 경험은 많이 해 봤습니다.
그럴 땐 보통 rsync 등을 쓰면 되고...
제 경우는 ... mc 를 주로 씁니다. .. 말끔하게 되더군요. (속도는 좀 느립니다.)
---------
귓가에 햇살을 받으며 석양까지 행복한 여행을...
웃으며 떠나갔던 것처럼 미소를 띠고 돌아와 마침내 평안하기를...
- 엘프의 인사, 드래곤 라자, 이영도
즐겁게 놀아보자.
http://akpil.egloos.com
---------
귓가에 햇살을 받으며 석양까지 행복한 여행을...
웃으며 떠나갔던 것처럼 미소를 띠고 돌아와 마침내 평안하기를...
- 엘프의 인사, 드래곤 라자, 이영도
즐겁게 놀아보자.
감사합니다.
mc는 안 써봤지만 앞으로는 rsync를 써봐야겠네요.
혹시 한 폴더내에 100만개의 화일 중에서 rsync로 7일 이전에 생성된 것만 move 할 수 있나요?
1. 원인 ARG_MAX : the
1. 원인
ARG_MAX : the maximum length of arguments to the exec function
(more precise: bytes of args plus environment for exec)
$ getconf ARG_MAX
131072
2. 해결방법
tar 로 묶은 다음
$ cd [해당디렉터리]; find . -name '*' -print | tar cvf [적당한경로]/temp.tar --files-from -
풀면 되지 않을까요.
출처 : http://michael-prokop.at/blog/2007/02/26/argument-list-too-long/
추가질문
100만개의 화일이 있는 폴더에서 7일 이전에 생성된 화일만을 tar로 묶는데
현재날짜보다 7일 이전의 날짜로 tar화일이름를 생성하고 생성된 화일을
move시키는 방법이 있을까요?
2.6.23
윈도와 달리 유닉스에서 와일드카드(*) 확장이 쉘에서 일어나고, 프로세스의 명령행 길이에 제한이 있기 때문에 일어나는 현상입니다. cp 같은 개별 프로그램과는 무관합니다.
제 개인적인 생각으로는 유닉스의 디자인 버그입니다.
때늦은 감이 있긴 하지만 리눅스 커널 2.6.23에 하드코딩된 명령행 길이 대신 동적으로 메모리를 할당하도록 하는 패치가 포함되었습니다.
http://lkml.org/lkml/2007/6/13/67
커널 업데이트후
커널 업데이트후 테스트 해보니 잘되네요.
----
Do not feed troll!
----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러
답변 감사합니다.
커널 2.6.23 이후의 리눅스 버전에서는 가능하다는 건가요?
저는 CentOS 4.4에서 5.0까지를 쓰고 있는데 잘 찾아봐야겠군요.
하하...
갑자기 생각나네요.
저는 복사할 파일수가 많아지면 rsync를 선호하는 편입니다.
cp가 가지고 있는 기능은 거의 다 가지고 있고, 무엇보다 cp 보다는 보는데 덜 지루하더라구요. ^^
따라서, 파일수가 많아서 복사가 안될 때도 rsync로 해결한다고 해야 겠지요.
rsync -aPv /src_dir /tgt_dir
그런데, 삭제시 rm 도 파일수가 많으면 cp처럼 똑같은 오류가 발생합니다.
어떻게 할까 고민 끝에 rsync로 지웠어요.
서브디렉토리까지 싹 삭제해줍니다. ^^
rm 대신 rsync를 쓸까봐요. ^^ 보는데 덜 지루하니까...
There is no spoon. Neo from the Matrix 1999.
There is no spoon. Neo from the Matrix 1999.
지우는 방법이 재치있네요
아주 재미있는 아이디어이군요
감사합니다.
혹시 한 폴더내에 100만개의 화일 중에서 rsync로 7일 이전에 생성된 것만 move 할 수 있나요?
cp *.data /target/ 가 잘
cp *.data /target/
가 잘 안된다면, 대신에
find -name '*.data' | xargs -I{} cp {} /target/
처럼 find와 xargs를 이용하거나
find -name '*.data' -exec cp {} /target/ \;
처럼 find만 이용하는 방법이 있겠습니다.
그러나 매 파일마다 cp를 띄우니 비효율적이죠 :(
그런 때는 rsync나 tar에서 exclude/include를 적절히 활용하면 됩니다.
rsync -a --exclude='*' --include='*.data' . /target/
--
Every truth is in the detail.
답변 감사합니다.
혹시 한 폴더내에 100만개의 화일 중에서 rsync로 7일 이전에 생성된 것만 move 할 수 있나요?
흠.. cp -r 로 되기는
흠.. cp -r 로 되기는 되는군요. 전체 복사라 좀 그렇지만 =_=;
. 으로 시작하는 파일을 제외시키려면 이런 식으로도 될 것 같네요.
(그냥 이건 재미로 봐주세요. :-)
뭐 다른 필터링이 필요하면 ls 와 split 사이에 grep이나 sed 등으로 필터링하시면 되겠구요.
--
perl -e's@@JEON Myoung-jin@;sub man{s| _|her e|}
sub see{s;^;Just;;u;s;e ;Perl ;;to;print$_,$/}$uperMan=M;
s=^....=U are not=;s~$uperMan~~;&admitIt;s=U are = A=;s|young|_|;&man;
sub admitIt{say;ye;s!-\w+! Hacker!};see U'
$Myoungjin_JEON=@@=qw^rekcaH lreP rehtonA tsuJ^;$|++;{$i=$like=pop@@;unshift@@,$i;$~=18-length$i;print"\r[","~"x abs,(scalar reverse$i),"~"x($~-abs),"]"and select$good,$day,$mate,1/$~for 0..$~,-$~+1..-1;redo}
저도 똑같은 경우인데 find + tar를 사용하고 있습니다.
최근 100일 이내지만 3일은 넘은 파일리스트를 find 명령으로 만들어서 임시파일로 만든다음
tar 명령의 -I 인자로 주면 됩니다.
깔쌈하게 잘되염~~~
그리고 exclude 하고
그리고 exclude 하고 싶은 파일이 있다면 find로 ~/excludelist.txt 파일을 임시로 만든담에
tar cfX - ~/excludelist.txt -I ~/includelist.txt | (cd [destination directory]; tar xvfBp -)
이렇게 하심 됩니다.
그리고 tar에서 exclude 할 때는
저도 저것땜에 한 세시간은 삽질했었습니다.
그리고 tar에서 exclude 할 때는
저도 저것땜에 한 세시간은 삽질했었습니다.
헐
이거 사이트가 이상한 건지 반응이 없어서 버튼을 막 눌렀더니 막 똑같은 내용이 막 올라가네요.
도배해서 죄송합니다.
댓글 달기