cp -L 대 cp -H


44

문제

cp -H또는로 파일을 복사 cp -L하면 동일한 결과가 나타납니다.

$ ls -l fileA
  fileA -> fileB
$ cp fileA somewhere/ -H
$ ls -l somewhere/
  fileA     # fileA is a copy of fileB, only renamed, with same properties!

이 답변 은 두 가지 옵션을 모두와 함께 사용되는 유사한 UNLESS로 설명합니다 -R. 나를 위해 아닙니다. 하드 링크 된 파일은 소스에서 가리키는 파일의 이름이 바뀐 이름이됩니다.
 

질문 :

cp -H및 의 올바른 사용법은 무엇입니까 cp -L? 이것이 예상되는 동작입니까?


  내 해결하려는 시도 : man cp두 옵션 모두에 대해 똑같이 말하지만 info cp' 말로 표현 하면 더 혼란 스럽습니다. 어쩌면 하나를 조금 나눌 수 있습니다.

-H 명령 행 인수가 기호 링크를 지정하는 경우 기호 링크 자체 가 아닌 해당 파일이 가리키는 파일복사하십시오 . 그러나 재귀 순회를 통해 발생하는 모든 심볼릭 링크복사 (본질을 유지)합니다 .

이것은 나에게 모순처럼 들린다.» 심볼릭 링크의 본질 «이 어딘가를 가리키는 것 같아…

-L, --dereference 복사 할 때 심볼릭 링크를 따르십시오. 이 옵션을 cp사용하면 심볼릭 링크를 만들 수 없습니다. 예를 들어 소스 트리의 심볼릭 링크 (일반 파일로)는 대상 트리의 일반 파일로 복사됩니다.

심볼릭 링크는 일반적인 파일이 아니라는 것을 알고 있지만…


를 실행 info cp하고를 검색 하십시오 -R. 그것은 말했다 Copy directories recursively. 하지만 당신은 아닌 디렉토리로 테스트하고 있습니다. 차이점은 명령 행 인수가 아니라 복사중인 디렉토리 내부에 있는 내용 입니다.
Mikel

@Mikel 나는 디렉토리의 내용을 복사하고 내용 자체가있는 디렉토리를 복사하려고 시도했지만 꽤 동일한 결과를 얻었습니다. 또한 : 나는 아주 오랫동안 앉아 있었고이 옵션 에서 단어info cp선택 이 실제로 무엇을 의미 하는지 알아 내기 위해 열심히 노력했습니다 . 이 게시물에 관한 내용입니다. 게시에는 실제 문구도 포함되어 info cp있으므로 적어도 열어야합니다.…;)
erch

답변:


54

심볼릭 링크를 사용하면 도구에는 두 가지 작업이 가능합니다.

  1. 심볼릭 링크를 심볼릭 링크 ( "자연 유지")로 취급하거나
  2. 심볼릭 링크를 가리키는 파일 형식으로 취급하십시오.

" -H자연을 보존 "한다고 말하는 것은 모순이 아닙니다. 대안을 고려하십시오. 을 사용 -L하면 모든 심볼릭 링크 cp가 열리고 해당 내용이 대상 파일 이름으로 복사됩니다. 소스는 심볼릭 링크 였지만 사본은 심볼릭 링크가 아닙니다. 그래서 그것은 "본질을 심볼릭 링크로 잃어 버렸습니다".

치다

$ mkdir subdir
$ echo "some contents" > subdir/file
$ ln -s file subdir/link

# definition of "list", the abbreviated ls -l output used below
$ list() { ls -l "$@" | \
    awk '$0 !~ /^total/ { printf "%s %s\t%s %s %s\n", $1, $5, $9, $10, $11 }' ; }

$ list subdir
-rw-rw-r-- 14   file  
lrwxrwxrwx 4    link -> file

$ cp -rH subdir subdir-with-H
$ list subdir-with-H
-rw-rw-r-- 14   file  
lrwxrwxrwx 4    link -> file

$ cp -rL subdir subdir-with-L
$ list subdir-with-L
-rw-rw-r-- 14   file  
-rw-rw-r-- 14   link  

훌륭한 답변 — 옵션의 기능을 설명하는 방식이 마음에 듭니다. 형제 링크에 심볼릭 링크를 복사하는 것과 관련하여 질문에 대답하지는 않지만 빠른 실험을 통해 어떻게 찾을 수 있는지 분명히했습니다. 😉
Michael Scheper

1
아, 내가 정말로 알고 싶었던 것은 다음과 같습니다. superuser.com/a/138594/219388
Michael Scheper

19

행동의 차이는 사이 -L-H때 제공 -r뿐만 아니라 지정됩니다. cp와 하위 디렉토리에 심볼릭 링크를 생성하지 않습니다 -L -r하지만 당신이 사용하는 경우 것입니다 -H -r.


cp : -H, -L 및 -P 옵션은 -r 옵션과 함께 지정할 수 없습니다.
3z33etm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.