cp 스위치에 대한 의견 부탁
글쓴이: 최원권(onebook) / 작성시간: 수, 2003/07/09 - 9:26오후
조그마한 BBS를 운영하고 있습니다.
자료실 또한 운영하고 있는데 이 자료를 NFS를 이용하여 다른 하드에 백업을 하고 있습니다. crontab 에 'cp -pru 원본 사본' 형태로 만들어 지금까지 잘 백업이 되었는데 요 며칠 전 백업되는 용량이 다르다는 것을 발견하고 원인을 파악해 보았습니다. 찾아낸 원인은 cp 명령어가 한 디렉토리의 파일 개수(약 3200)를 넘어서면 에러가(Argument list too long) 나는 것으로 잠정적으로 제가 결론을 내렸습니다. 맞는지 모르겠지만....
앞으로도 자료는 계속 회원들이 저장을 하게 되는데 해결 방법을 생각하다가 복사시 날짜별로 하는 방법이 없을까 고민하다고 cp 자료를 모두 찾아봐도 특정 날짜만을 복사한다거나 특정 날짜 이후에 복사한다거나 하는 옵션을 찾지 못하고 시간을 보내고 있습니다.
좋은 방법이 있다면 고수님들의 의견을 부탁합니다.
Forums:
find 명령을 이용하세요...
먼저 제 경우 'cp -a' 명령을 이용하는데 한 디렉토리에 수십만개의 파일이
있는 경우에도 복사에 큰 문제는 없었습니다. 다시한번더 확인해 보시고요.
find 명령을 이용하면 문제를 해결하실 수 있습니다.
예를 들어
이렇게 하면 '/data' 이하 디렉토리에서 access 한지 24시간 이상된
파일들을 찾아 각각 '/backup' 디렉토리로 복사하라는 명령입니다.
그럼...
-atime 연산자를 사용할 경우 -type 을 지정하지 않으면 fin
-atime 연산자를 사용할 경우 -type 을 지정하지 않으면 find가 검색하면서 디렉토리를 액세스를 하게 되어 정확한 결과치를 구하지 못할 수도 있다고 합니다.
-mtime 1 : 하루전의 0 ~ 24시까지의 수정된 파일을 검색하고,
-mtime -1 : 오늘 0 ~ 현재까지 수정된 파일을 검색합니다.
이렇게 하면 어떨가요?
find /data -type f -mtime 1 -exec cp -a {} /backup \;
[/code]rsync의 --backup 옵션을 이용하는 게 수십배는 더 효율적입니다
rsync의 --backup 옵션을 이용하는 게 수십배는 더 효율적입니다.
매뉴얼이나 관련 문서를 찾아보세요.
해당 문제만을 가지고 보면 cp 를 하실때 디렉토리가 아닌 그아래 파
해당 문제만을 가지고 보면
cp 를 하실때 디렉토리가 아닌 그아래 파일을 지정하신 것 같습니다.
즉 cp -a a b 이렇게 하신게 아닌 cp -a a/* b 머 이런 식으로 하셨기 때문에
Argument list too long 에러가 나신것 같네요.
그냥 a 디렉토리 자체를 카피 하시면 나오지 않습니다.
만세
댓글 달기