리눅스 cp 사용 시 자동으로 overwrite 처리하기
개인적으로 서버에서 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를 입력한 것과 같이 처리해줍니다.
최근 댓글