cp 명령어는 Copy의 약자로 파일 및 디렉토리를 복사합니다. 기본 사용법은 log]# cp messages messages_ori 간단하게 복사할 대상과 새로운 이름 등을 설정하여 사용할 수 있습니다. cp 명령어를 실행할 때 같은 이름의 대상 파일이 있을 때는 사용자에게 묻지 않고 덮어쓰기가 되는데, 이를 방지하기 위해 Alias “cp=’cp -i”로 설정되어 있습니다. 1. cp 명령어 옵션자주 사용하는 cp 명령어 옵션입니다.
2. cp 명령어 일괄 덮어쓰기 설정 2가지 방법리눅스 명령어인 ‘cp’ 명령어를 사용 중에 ‘overwrite’를 물어보는 경우가 발생합니다. log]# cp messages messages_ori cp: overwrite 'messages_ori'? y [root@ip-172-26-13-161 log]# 파일이 한 두개일 경우에는 괜찮지만 여러 파일을 복사할 경우 번거로워질 수 있습니다. 이럴 경우 아래와 같은 옵션을 사용하여 명령을 수행할 수 있습니다. ~log]# yes | cp messages messages_ori cp: overwrite 'messages_ori'? ~log]# log]# \cp messages messages_ori 자동으로 덮어쓰기를 물어보지 않고 복사가 됩니다. ‘yes |’ 를 앞에 넣어서 사용하거나 역슬러쉬’\’를 넣어서 사용하는 방법입니다. 간단히 cp 명령어 옵션에 대해 알아 보았습니다. 개요안녕하세요 피터입니다. 간혹 리눅스에서 cp 명령어로 파일 또는 디렉토리를 복사할 때 이미 존재하는 파일인 경우에 파일을 덮어쓸지 사용자에게 물어보는 경우가 있습니다.
수동으로 복사할 경우에는 y를 입력하여 덮어쓰면 되는데, 여러 파일을 복사하는 경우에는 매 파일마다 y를 입력하는게 귀찮을 수 있습니다. 또한 스크립트로 자동화를 하는 경우에는 사용자에게 물어보는 절차를 생략하고 강제로 덮어쓰고 싶을 때가 있을 것입니다. 그런데 아래처럼 cp 명령어의 -f (강제 적용) 옵션을 사용해도 계속해서 사용자에게 덮어쓸 것인지 물어보는데 이런 경우는 alias 때문입니다.
cp 라고만 입력해도 cp -i 옵션이 자동으로 들어가도록 alias가 적용되어 있기 때문에 -f 옵션이 듣지 않았던 것입니다. 사실 이러한 alias 는 mv 명령어도 마찬가지입니다.
이런 경우에는 아래와 같은 방법으로 해결할 수 있습니다. 1. 절대경로 사용
which cp 로 cp 명령어의 경로를 확인한 뒤 절대경로로 명령어를 실행하면 alias가 적용되지 않습니다. 2. escape 문자 사용
\(역슬래시)를 cp 명령어 앞에 붙여주면 마찬가지로 alias가 적용되지 않습니다. 둘 중 아무거나 편한 방법을 사용하시면 사용자에게 물어보지 않고 강제로 덮어쓸 수 있습니다. 마찬가지로 mv 명령을 사용할 때에도 같이 적용 가능합니다. -Peter의 우아한 프로그래밍 여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 주시면 감사하겠습니다. 개인적으로 서버에서 cp 명령어를 사용할 때, 종종 overwrite를 해야하는 경우가 많이 있습니다. 기본적으로 cp에는 alias(별명)이 적용이 되어있는데, 그 내용은 다음과 같습니다. alias cp='cp -i' 위 alias는 콘솔에서 alias 입력 후 엔터를 치면 확인할 수 있습니다. 위와 같이 설정되어있는 경우, 파일이 적으면 그냥 y를 파일마다 누르면서 넘어가겠지만 그 수가 많은 경우에는 y를 눌러 복사를 수행하기가 매우 불편합니다. 가장 간편한 방법은, unalias cp 명령어를 통해 적용되어있는 cp에 대한 alias를 해제시켜주는 것입니다. 그렇게 되면 현재 터미널 세션이 유지되는 동안 cp에 대한 -i 옵션(interactive)을 사용하지 않은 cp 명령어를 사용할 수 있게 됩니다. 이후, -Rf 옵션을 추가적으로 부여하여, 하위 디렉토리의 내용까지 함께 복사하도록 요청합니다. /home/data 디렉토리 안에 들어있는 모든 파일 및 디렉토리를 /data 디렉토리로 복사하는 경우, 다음과 같이 사용할 수 있습니다. cp -Rf /home/data/* /data -f옵션(–force)에 의해 현재 사용중이 아닌 파일인 경우 해당 파일을 삭제하고 새로운 파일을 쓰게끔 작업이 진행됩니다. -R옵션(–recursive)에 의해 해당 디렉토리의 하위 디렉토리도 함께 복사할 수 있게 됩니다. 리눅스에서는 -r로 -R을 대신할 수 있습니다. (완전히 동일한 의미) 위 방법 이 아닌 다른 방법이 여러가지 있겠지만, 위의 경우가 가장 간단하게 적용할 수 있는 방법이라고 생각합니다. 다음의 방법도 적용할 수 있습니다. yes | cp -rf xxx yyy 위 명령어를 통해 xxx파일을 yyy로 만약 overwrite해야하는 경우 자동으로 yes를 입력한 것과 같이 처리해줍니다. |