
Copy의 줄임말로 파일이나 디렉토리를 복사할 때 사용하는 명령어이다.
cp [옵션][복사할 디렉토리/파일] [복사 될 디렉토리/파일]
cp 명령어의 옵션을 제외한 인자 값은 생략이 불가능하다
경로를 지정하지 않으면 현 위치를 Defualt로 한다.
복사할 때 새로운 이름을 지정하여 복사할 수 있다.
다양한 옵션을 사용하여 기존의 파일이나 디렉토리를 보호하는 등의 행동을 취할 수 있다.
[옵션]
-i : 복사될 파일이 이름이 이미 존재할 경우, 사용자에게 덮어 쓰기 여부를 묻는다.
-b : 복사될 파일이 이름이 이미 존재할 경우, 백업파일을 생성한다.
-f : 복사 될 파일이 이름이 이미 존재 할 경우, 강제로 덮어쓰기 한다.
-r : 하위 디렉토리 까지 모두 복사한다.
-a : 원본 파일의 속성, 링크 정보까지 모두 복사한다.
-p : 원본 파일의 소유자, 그룹, 권한 등의 정보까지 모두 복사한다.
-v : 복사 진행 상태를 출력한다.
ex. cp -rf * 폴더 : 현재 위치의 모든 폴더와 하위 폴더 까지 대상 폴더에 강제로 덮어쓴다.
ln A B
원본 파일과 동일한 inode를 가지며 원본 파일이 삭제되더라도 링크 파일을 여전히 사용 가능하다.
원본파일과 동일한 용량을 차지하게 된다.
i-node
: 파일이 생성될 때마다 할당되는 고유 번호. inode에는 파일의 권한, 형태 등 파일에 대한 모든 정보가 들어가 있다. ls -i [파일] 명령어로 inode 값을 확인 할 수 있다.
inode는 파일의 데이터를 가리키고, 하드링크는 inode를 가리키게 된다. 따라서 우리가 확인할 수 있는 모든 파일들은 하드링크이다. 모든 파일들은 하나 이상의 하드링크를 가지게 되고, 파일에 할당된 단 하나의 하드링크도 존재하지 않을 시 파일이 삭제되었다고 하는 것이다.
cp 명령어는 원본과는 다른 inode 값을 가리킨다는 점이 하드링크와의 차이점이다. 따라서 하드링크는 파일을 수정 할 시 원본과 복사본에 동일하게 변경내용이 반영이 되지만, cp 명령어 같은 경우에는 한쪽에서 발생한 변경내용이 서로 반영되지는 않는다.
cf) ls -al 명령어로 소프트링크 확인 가능