파일 복사와 링크
리눅스에는 파일을 복사할 수도 있고, 링크할 수도 있다.
복사는 말그대로 A라는 파일의 데이터와 같은 데이터를 가진 새로운 파일 B를 만들어 내는 것이고,
링크는 A라는 파일을 가리키는 B라는 파일을 새롭게 만들어내는 것이다.
파일 복사시에는 A파일과 B파일이 각각 다른 메모리를 차지하게 되고,
링크 시에는 메모리는 원본파일 A의 메모리와 B가 가리키는 메모리가 같다.
파일 복사
cp 명령어를 이용해서 파일을 복사할 수 있다.
cp [복사할 파일명] [새로 만들 파일명]
ex1) 파일 복사
같은 폴더 내에서 파일을 복사한다.
cp list.txt list_copy.txt
ex2) 폴더 복사
폴더와 해당 폴더 하위의 모든 파일을 복사한다.
폴더 생성
mkdir folder1
폴더 복사
cp -rf folder1 folder2
ex3) 폴더를 다른 폴더 하위 디렉터리로 복사
home1 폴더를 만들고, folder2 폴더를 home1 폴더 아래에, folder3이란 이름으로 복사해 보자.
cp -rf folder2 home1/folder3
ex 4) 하위의 모든 파일 복사 ( * )
home2 폴더를 새로 만들고, home1 하위의 모든 데이터를 home2로 복사해 보자.
cp -rf * ../home2/
- home1에서 명령어 입력
- * 은 모두라는 뜻
하드 링크와 소프트 링크
리눅스에서 파일을 링크하는 방법은 크게 두 가지가 있다. 하드 링크와 소프트링크이다.
하드링크와 소프트링크 모두 복사된 파일명으로 원래의 파일에 접근할 수 있다.
그리고, 두가지 방법 모두 파일이 실제로 새로 생성되는 것은 아니고, 물리적으로 같은 데이터(파일)를 가리킨다.
하드링크와 소프트링크는 차이점이 있다. 아래에서 살펴보자.
하드 링크
ln [복사할 파일명] [새로운 파일명]
list.txt 파일을 하드 링크한 파일 list_hard.txt가 생성된 것을 볼 수 있다.
하드 링크를 하면, 두 파일은 실제로 동일한 데이터를 가리키고 있다.
수정 시
따라서 list.txt를 수정하면, list_hard.txt에도 수정된 것이 적용된다.
또한, list_hard.txt를 수정해도 list.txt에도 수정된 것이 적용된다.
삭제 시
원본 파일 list.txt를 삭제해도, list_hard.txt는 삭제되지 않고, list_hard.txt의 데이터도 그대로 남아있다.
list.txt를 삭제하면, 원본 데이터를 list_hard.txt가 그대로 가리키고 있어서 데이터가 삭제되지 않는다.
소프트 링크
- 소프트 링크 = 씸볼릭 링크
- 윈도우의 바로가기와 동일하다.
ln -s [복사할 파일명] [새로운 파일명]
list.txt 파일을 소프트 링크한 파일 list_soft.txt가 생성된 것을 볼 수 있다.
소프트 링크 시 하드 링크와 다르게 원본파일 list.txt를 삭제하면 list_soft.txt의 데이터는 삭제된다.
(파일은 삭제되지 않음)
하드 링크와 소프트 링크의 차이
- 맨 처음에 Original file은 Original data를 가리키고 있다.
- Hard link 파일이 생성되면, 똑같이 Original data를 가리키게 된다.
- Soft link 파일은 Original file을 가리키는 포인터를 가리키게 된다.
'DevOps > Linux 리눅스' 카테고리의 다른 글
[Linux/Unix] POSIX란? (포직스, 이식 가능 운영체제 인터페이스, Unix 표준) (0) | 2024.04.17 |
---|---|
[리눅스] VI 에디터 명령어 정리 (0) | 2023.07.21 |
[리눅스] 프로세스, 상태 확인하기 (0) | 2023.07.10 |
[리눅스] 리다이렉션과 파이프, grep 명령어 (0) | 2023.07.10 |
[리눅스] 기본 명령어 (0) | 2023.07.06 |