Skip to content
Tiantan
Articles

cp -r과 cp -R (복사 명령)의 차이점

On 2월 18, 2021 by admin

cp -r는 파일을 재귀 적으로 복사하는 것입니다. 디렉토리를 재귀 적으로 복사하기위한 cp -R. 하지만 확인한 결과 둘 다 파일과 디렉토리를 모두 복사하는 것처럼 보입니다. 실제로 차이점은 무엇입니까?

댓글

  • Linux 설명서에서 이러한 옵션에 대한 모든 언급은 ' 동의어라고 말합니다. (그들은 ' 다른 유닉스 변형에 없습니다.)

답변

-R는 잘 정의 된 posix이지만 -r는 이식 할 수 없습니다!

Linux에서는 cp, -r 및 -R의 GNU 및 BusyBox 구현은 동일합니다.

반면에 cp의 POSIX 매뉴얼 페이지에서 읽을 수 있습니다. , -r 동작은 구현 정의 입니다.

 * If neither the -R nor -r options were specified, cp shall take actions based on the type and contents of the file referenced by the symbolic link, and not by the symbolic link itself. * If the -R option was specified: * If none of the options -H, -L, nor -P were specified, it is unspecified which of -H, -L, or -P will be used as a default. * If the -H option was specified, cp shall take actions based on the type and contents of the file referenced by any symbolic link specified as a source_file operand. * If the -L option was specified, cp shall take actions based on the type and contents of the file referenced by any symbolic link specified as a source_file operand or any symbolic links encoun- tered during traversal of a file hierarchy. * If the -P option was specified, cp shall copy any symbolic link specified as a source_file operand and any symbolic links encoun- tered during traversal of a file hierarchy, and shall not follow any symbolic links. * If the -r option was specified, the behavior is implementation- defined. 

댓글

  • 차이점 중 하나는 OSX에서 -r는 심볼릭 링크가 가리키는 실제 파일을 복사하는 반면 -R는 대부분의 경우 의도 된 심볼릭 링크를 복사합니다.

답변

소문자 -r는 4.1BSD에 도입 된 이전 옵션으로, 모든 비 디렉토리를 단순히 파일로 복사합니다. 즉, 장치 나 FIFO를 발견하면이를 열고 내용을 읽고 내용이있는 대상에 파일을 만듭니다.

대문자 -R는 표준화 된 옵션 (이전 버전은 -r과 동의어로 사용되었지만 4.4BSD에서 BSD에 도입 됨)으로 장치, FIFO 또는 기타 특수 파일을 만나면, 대상에 동등한 특수 파일을 만드십시오.

많은 구현이 여전히이 구별을 유지하지만 일부 (Linux에 일반적인 GNU 버전 포함)는 -R 만 제공합니다. 동의어로 -r를 사용합니다.

답변

차이점은 하나는 소문자 “R”을 사용하고 다른 하나는 대문자 “R”을 사용합니다. 그 이상은 차이가 없습니다. --recursive 긴 옵션을 사용하는 경우에도 마찬가지입니다.

댓글

  • 맨 페이지에서 :- R, -r, –recursive-디렉토리를 재귀 적으로 복사합니다.
  • @DaveJennings : 하나의 플랫폼에서 동일하다고해서 ' 모두에 있다는 의미는 아닙니다. cp의 일부 구현에는 실제로 차이가 있습니다. Random832 '의 답변 을 참조하세요. @Ignacio " cp가 최신 GNU 구현 인 경우 등입니다.
  • @Caleb : 질문에 " linux " 태그가 지정되어 있습니다. 다른 것은 무엇일까요?
  • -R과 -r은 제가 사용하는 일부 시스템 (OS X, FreeBSD, BusyBox coreutils, 현재 어떤 시스템인지 확실하지 않음)에서 다른 동작을합니다. 오래 전에 항상 -R 만 사용하는 것이 현명하다고 결정했으며 실제로 방금 언급 한 시스템의 일부 매뉴얼 페이지에서도이를 권장합니다.

답변

OS X 및 이전 버전의 FreeBSD에서 -r는 또는 symlink를 따르고 특수 파일 및 FIFO의 내용을 읽습니다.

mkdir a;touch b;ln -s $PWD/b a;cp -r a c는 symlink를 대상 파일로 대체합니다. OS X, mkdir a;mkfifo a/b;cp -r a c는 FIFO 읽기를 차단하고 mkdir a;ln -s /dev/zero a;cp -r a b는 b/zero를 0으로 채우기 시작합니다. .

OS X 및 이전 버전의 FreeBSD의 cp 매뉴얼 페이지에서 :

Historic versions of the cp utility had a -r option. This implementation supports that option; however, its use is strongly discouraged, as it does not correctly copy special files, symbolic links, or fifo"s. 

FreeBSD의 새 버전에서 -r는 -RL :

Historic versions of the cp utility had a -r option. This implementation supports that option, however, its behavior is different from historical FreeBSD behavior. Use of this option is strongly discouraged as the behavior is implementation-dependent. In FreeBSD, -r is a synonym for -RL and works the same unless modified by other flags. Historical imple- mentations of -r differ as they copy special files as normal files while recreating a hierarchy. 

http://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html :

--copy-contents

재귀 적으로 복사하는 경우 특수 파일 (예 : FIFO 및 장치 파일)의 내용을 일반 파일처럼 복사합니다. 이는 각 소스 파일의 데이터를 읽고 대상에 쓰는 것을 의미합니다. 일반적으로이 옵션은 FIFO 및 일반적으로 /dev 디렉토리에있는 파일과 같은 특수 파일에 바람직하지 않은 영향을 미치기 때문에이 옵션을 사용하는 것은 실수입니다.대부분의 경우 cp -R --copy-contents는 FIFO 및 /dev/console와 같은 특수 파일에서 읽기를 시도하는 동안 무기한 중단되며 다음과 같은 경우 대상 디스크를 채 웁니다. /dev/zero를 복사하는 데 사용합니다. 이 옵션은 재귀 적으로 복사하지 않는 한 효과가 없으며 기호 링크 복사에 영향을주지 않습니다.

답변

차이점 중 하나는 -r이 -R은 숨겨진 디렉토리를 복사하는 동안 숨겨진 디렉토리를 복사합니다.

대상 디렉토리에서 .git 디렉토리를 테스트하고 위의 결론에 도달했습니다. 현재 centOS를 사용하고 있습니다.

내가 틀렸을 수도 있지만 토론의 여지가 있습니다.

댓글

  • 동의합니다. ' CentOS 5에서는이 항목이 표시되지 않습니다. -r 및 -R 모두 숨겨진 디렉토리를 복사합니다.

li>

Written by admin

답글 남기기 답글 취소하기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다

최신 글

  • 공진 쌍극자와 발룬 사용
  • “ 할 수 없음 ” 및 “ 할 수없는 ? [중복]
  • JFK에서 국내선 항공편의 터미널 간 이동이 가능합니까?
  • “ 감사합니다 ” 또는 “ 감사합니다 ”
  • ' 추상적 인 아이디어 '는 무엇을 의미합니까? [종료]

보관함

  • 2021년 2월
  • 2021년 1월
  • 2020년 12월
  • 2020년 11월
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어

Copyright Tiantan 2021 | Theme by Theme in Progress | Proudly powered by WordPress

Back to top