cp -l 또는 ln을 사용한 하드 링크에는 차이점이 있습니까?


15

rsync 및 하드 링크를 사용하여 백업 구성표를 구현하고 있습니다. rsync와 함께 link-dest를 사용하여 하드 링크를 수행 할 수 있다는 것을 알고 있지만 rlink에서 "link-dest"가 구현되기 전에 "cp -l"을 사용하는 것에 대한 언급을 보았습니다. 내가 아는 또 다른 하드 링크 방법은 "ln"입니다.

그래서 제 질문은 호기심입니다. "ln"을 사용하는 것과 비교하여 "cp -l"을 사용하여 하드 링크를 만드는 데 차이가 있습니까?


링크는 구별 할 수 없습니다.
rici

차이가 없다고 말하는 것입니까? 그들은 상호 교환하여 사용할 수 있습니까?
twan163

나는 약간의 테스트를 스스로 실행했지만 첫눈에 둘 사이의 차이점을 볼 수 없었습니다.
twan163

cp: illegal option -- lcp에 l 옵션이 있습니까?
Tom

답변:


16

원본 파일에 대한 하드 링크가 생성되므로 두 결과는 동일해야합니다.

차이점은 의도 된 사용법과 각 명령에서 사용할 수있는 옵션에 있습니다. 예를 들어 cp재귀를 사용할 ln수 있지만 다음과 같은 작업은 할 수 없습니다.

cp -lr <src> <target>

<target>모든 파일에 대한 하드 링크를 만듭니다 <src>. (링크가 아닌 새 디렉토리를 만듭니다) 결과는 아래의 디렉토리 트리 구조가 아래의 구조와 <target>동일하게 나타납니다 <src>. cp -r <src> <target>후자를 사용하면 각 파일과 폴더를 복사하고 각각에 새로운 것을 제공하는 inode반면, 전자는 파일에 대한 하드 링크를 사용하므로 단순히 수를 증가 시킨다는 점과 다릅니다 Links.

예와 같이 단일 파일을 복사하는 데 사용되는 경우 결과는 동일합니다.


올바르게 이해하면 "cp -lr"은 모든 파일에 대한 하드 링크를 생성하지만 <target>에 누락 된 디렉토리가 있으면 새 디렉토리로 생성됩니다 (예 : <target>의 디렉토리에 대한 하드 링크 없음)?
twan163

예, 맞습니다. 디렉토리에 대한 하드 링크를 작성할 수 없습니다. 따라서 파일 / 디렉토리 구조를 유지하기 위해 '실제'디렉토리 내의 파일에 대한 하드 링크가됩니다.
garethTheRed

"cp -lr"의 동작 : 파일의 하드 링크 ... 디렉토리의 새 디렉토리 조금 이상해 보이지만이 "이상한"동작이 제약 조건의 부작용 인 것 같습니다 (디렉토리의 하드 링크를 가질 수 없음). ||| 참고로 참고로 여기에 askubuntu의 director ref1unix.stackexchange의 ref2에 허용되지 않는 하드 링크 정보에 대한 링크가 있습니다.
Trevor Boyd Smith

2

link 는 가장 적은 시스템 호출을 사용하고 그 뒤에 lncp가 옵니다 .

$ strace link f.txt g.txt | wc --lines
282

$ strace ln --symbolic f.txt g.txt | wc --lines
311

$ strace ln f.txt g.txt | wc --lines
334

$ strace cp --symbolic f.txt g.txt | wc --lines
394

$ strace cp --link f.txt g.txt | wc --lines
410
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.