o 여러가지 복사 방법
# cp /etc/passwd .
# rsync /etc/passwd passwd2
# dd if=/etc/passwd of=passwd3
# install -m 644 /etc/passwd passwd4
# cat /etc/passwd > passwd5
# scp root@localhost:/etc/passwd passwd6
# ll /etc/passwd passwd passwd2 passwd3 passwd4 passwd5 passwd6
-rw-r--r-- 1 root root 1569 Mar 20 06:07 /etc/passwd
-rw-r--r-- 1 root root 1569 Mar 20 06:12 passwd
-rw-r--r-- 1 root root 1569 Mar 20 06:13 passwd2
-rw-r--r-- 1 root root 1569 Mar 20 06:13 passwd3
-rw-r--r-- 1 root root 1569 Mar 20 06:14 passwd4
-rw-r--r-- 1 root root 1569 Mar 20 06:14 passwd5
-rw-r--r-- 1 root root 1569 Mar 20 06:18 passwd6
#############################################
## 주제 : 하드링크 & 심볼릭링크 ##
#############################################
o 링크 종류
하드 링크
심볼릭(소프트) 링크
o 하드 링크와 심볼릭 링크를 만드는 이유는 무엇인가 ?
1. 호환성을 유지하기 위해서 만든다.
e.g.)
/bin/sh -> /bin/bash
/etc/init.d -> /etc/rc.d/init.d
2. useradd, adduser 처럼 햇갈리는 명령어들을 링크를
걸어줌으로써 햇갈리는 명령어를 동일하게 사용할 수
있다.
ex) # ln -s /usr/sbin/userdel /usr/sbin/deluser
/usr/sbin/adduser -> /usr/sbin/useradd
3. 깊이가 깊은 디렉토리나 파일을 간단하게 접근하기 위해서
ex) /etc/httpd.conf -> /usr/local/apache/conf/httpd.conf
4. /dev/cdrom
- 현재 프로세스번호(PID)
/dev/cdrom -> /dev/hdc
# ls -l /proc/$$/fd
total 0
lrwx------ 1 root root 64 Apr 28 12:55 0 -> /dev/pts/6
lrwx------ 1 root root 64 Apr 30 06:05 1 -> /dev/pts/6
lrwx------ 1 root root 64 Apr 30 06:04 2 -> /dev/pts/6
o 리눅스 파일시스템 구조
+--------- 파티션 1 -------------+
| |
+--+---+---------+---------------+
| | | 1 | ... |
| | | | |
+--+---+---------+---------------+
1 2 3 4
1. 부트블럭
2. 슈퍼블럭
3. inode 블럭
4. data 블럭 (실제 자료가 저장되는 공간)
심볼릭링크 하드링크
---------+-------------------------------------------------------
디렉토리 | 링크가 가능 X
---------+-------------------------------------------------------
파티션 | 넘어갈 수 있다. X
---------+-------------------------------------------------------
원본파일 | 원본파일 삭제하면 사용할 수 없다. O
| (고아링크)
---------+-------------------------------------------------------
아이노드 | 아이노드가 새로 생성 아이노드가 같다.
| 아이노드 개수가 변화가 없다. 아이노드 개수가 증가
---------+-------------------------------------------------------
o 심볼릭과 하드링크의 차이점
- 심볼릭 링크
[심볼릭 링크] -> [원본 파일] -> [파일 시스템의 데이터]
- 하드 링크
[하드 링크 파일] -> [파일 시스템의 데이터] <- [원본 파일]
!!! 실습시 아이노드 번호는 달라진다. !!!
=========================================================================
LAB> 하드링크와 심볼릭링크 만들기
# cd
# install -m 700 -d LINKTEST
# ls -ld LINKTEST
drwx------ 2 root root 4096 May 30 17:19 LINKTEST
# cd LINKTEST
# cat > a.txt
File test ...
^d
# df -i
- a.txt 파일에 대한 하드 링크를 생성한다.
# ln a.txt b.txt
# ls -li a.txt
1802460 -rw-r--r-- 1 root root 14 Apr 30 05:26 a.txt
# ln a.txt b.txt
# ls -li a.txt
1802460 -rw-r--r-- 2 root root 14 Apr 30 05:26 a.txt
# ls -li
total 16
1802460 -rw-r--r-- 2 root root 14 Apr 30 05:26 a.txt
1802460 -rw-r--r-- 2 root root 14 Apr 30 05:26 b.txt
# df i
- b.txt 파일에 대한 심볼릭 링크를 생성한다.
# ln -s b.txt c.txt
# ls -li
total 20
1802460 -rw-r--r-- 2 root root 14 Apr 30 05:26 a.txt
1802460 -rw-r--r-- 2 root root 14 Apr 30 05:26 b.txt
1802461 lrwxrwxrwx 1 root root 5 Apr 30 05:29 c.txt -> b.txt
=========================================================================
=========================================================================
LAB> 아래 조건을 가지고 링크 연습을 해보자.
심볼릭링크 하드링크
---------+-------------------------------------------------------
디렉토리 | 링크가 가능 X
---------+-------------------------------------------------------
파티션 | 넘어갈 수 있다. X
---------+-------------------------------------------------------
원본파일 | 원본파일 삭제하면 사용할 수 없다. O
| (고아링크)
---------+-------------------------------------------------------
아이노드 | 아이노드가 새로 생성 아이노드가 같다.
| ls -l 변화가 없다. 아이노드 개수가 증가
---------+-------------------------------------------------------
1. 디렉토리 테스트
# mkdir testdir
# ln -s testdir testdir2 <-- O
# ln testdir testdir3 <-- X
- 디렉토리는 하드 링크는 사용할 수 없지만 mount 명령어로 비슷한 효과를
가질 수 있다.
# mkdir testdir3
# mount -o bind testdir testdir3
# echo 1234 > testdir/a.txt
# ls -l testdir
# ls -l testdir3
# cat testdir/a.txt
# cat testdir3/a.txt
# mount
# df
2. 파티션 테스트
# ln -s /boot/vmlinuz-2.6.18-348.el5 vmlinuz2 <-- O
# ln /boot/vmlinuz-2.6.18-348.el5 vmlinuz3 <-- X
3. 원본파일 테스트
- 심볼릭 링크 테스트
[심볼릭 링크] -> [원본 파일] -> [파일 시스템의 데이터]
# echo File test ... > a.txt
# ln -s a.txt c.txt
# cat a.txt
File test ...
# cat c.txt
File test ...
# echo 1234 >> a.txt
# cat a.txt
File test ...
1234
# cat c.txt
File test ...
1234
# rm -fv a.txt
# cat a.txt <-- X
# cat c.txt <-- X
- 하드 링크 테스트
[하드 링크 파일] -> [파일 시스템의 데이터] <- [원본 파일]
# echo File test ... > a.txt
# ln a.txt b.txt
# ls -li
total 16
1802460 -rw-r--r-- 2 root root 14 Apr 30 06:29 a.txt
1802460 -rw-r--r-- 2 root root 14 Apr 30 06:29 b.txt
# cat a.txt
File test ...
# cat b.txt
File test ...
# rm -fv a.txt
removed `a.txt'
# ls -li
total 8
1802460 -rw-r--r-- 1 root root 14 Apr 30 06:29 b.txt
# cat b.txt
File test ...
=========================================================================
LAB> 리눅스에서 하드링크와 심볼릭링크를 찾아보기
o 하드링크
# ls -li /usr/bin/zgrep
32363 -rwxr-xr-x 3 root root ....
# ls -li /usr/bin | grep "x 3"
# ls -li /usr/bin | grep "x 2"
o 심볼릭링크
# ls -ld /etc/init.d
# ls -l /bin/sh
# ls -l /bin/awk
. <-- 현재디렉토리
.. <-- 상위디렉토리
| / 2
+---+----+
|
root/ . 65217 .. 2
|
A/ 3 . 65227 .. 65217
|
B/ 3 . 65268 .. 65227
|
C/ 2 . 65269 .. 65268
# cd /
# ls -ldi
2 drwxr-xr-x 22 root root 4096 May 30 10:07 .
# cd /root
# ls -ali
65217 drwxr-x--- 8 root root 4096 May 30 18:40 .
2 drwxr-xr-x 22 root root 4096 May 30 10:07 ..
65227 drwxr-xr-x 3 root root 4096 May 30 18:40 A
# cd A
# ls -lia
total 24
65227 drwxr-xr-x 3 root root 4096 May 30 18:40 .
65217 drwxr-x--- 8 root root 4096 May 30 18:40 ..
65268 drwxr-xr-x 3 root root 4096 May 30 18:40 B
# cd B
# ls -lia
total 24
65268 drwxr-xr-x 3 root root 4096 May 30 18:40 .
65227 drwxr-xr-x 3 root root 4096 May 30 18:40 ..
65269 drwxr-xr-x 2 root root 4096 May 30 18:40 C
# cd C
[root@ksw C]# ls -lia
total 16
65269 drwxr-xr-x 2 root root 4096 May 30 18:40 .
65268 drwxr-xr-x 3 root root 4096 May 30 18:40 ..
======================================================
install -m 700 -d LINKTEST
[root@localhost ~]# ls
LINKTEST
[root@localhost ~]#
[root@localhost ~]# ls
LINKTEST
[root@localhost ~]# ls -l
total 4
drwx------ 2 root root 4096 Dec 25 13:36 LINKTEST
[root@localhost ~]# ls -ld LINKTEST
drwx------ 2 root root 4096 Dec 25 13:36 LINKTEST
[root@localhost ~]# ls -l
total 4
drwx------ 2 root root 4096 Dec 25 13:36 LINKTEST
[root@localhost ~]#
[root@localhost ~]# ls -ld /
drwxr-xr-x 25 root root 4096 Mar 12 2015 /
[root@localhost ~]# ls -ldi /
2 drwxr-xr-x 25 root root 4096 Mar 12 2015 /
[root@localhost ~]#
[root@localhost ~]# ls -ld /root
drwxr-x--- 4 root root 4096 Dec 25 13:36 /root
[root@localhost ~]# ls -ldi /root
262145 drwxr-x--- 4 root root 4096 Dec 25 13:36 /root
[root@localhost ~]# ls -ldi /root/LINKTEST
262146 drwx------ 2 root root 4096 Dec 25 13:36 /root/LINKTEST
[root@localhost ~]#
[root@localhost ~]# cd LINKTEST
[root@localhost LINKTEST]# ls -ali
total 12
262146 drwx------ 2 root root 4096 Dec 25 13:36 .
262145 drwxr-x--- 4 root root 4096 Dec 25 13:36 ..
[root@localhost LINKTEST]#
[root@localhost LINKTEST]# cd ..
[root@localhost ~]# ls -ali
total 88
262145 drwxr-x--- 4 root root 4096 Dec 25 13:36 .
2 drwxr-xr-x 25 root root 4096 Mar 12 2015 ..
266735 -rw------- 1 root root 11040 Dec 25 13:33 .bash_history
262148 -rw-r--r-- 1 root root 24 Jan 6 2007 .bash_logout
262149 -rw-r--r-- 1 root root 191 Jan 6 2007 .bash_profile
266866 -rw-r--r-- 1 root root 493 Mar 10 2015 .bashrc
262151 -rw-r--r-- 1 root root 100 Jan 6 2007 .cshrc
266734 -rw------- 1 root root 16 Mar 9 2015 .mysql_history
329737 drwx------ 2 root root 4096 Mar 12 2015 .ssh
262152 -rw-r--r-- 1 root root 129 Jan 6 2007 .tcshrc
262146 drwx------ 2 root root 4096 Dec 25 13:36 LINKTEST
[root@localhost ~]#
[root@localhost ~]# ls -aldi . .. LINKTEST
262145 drwxr-x--- 4 root root 4096 Dec 25 13:36 .
2 drwxr-xr-x 25 root root 4096 Mar 12 2015 ..
262146 drwx------ 2 root root 4096 Dec 25 13:36 LINKTEST
[root@localhost ~]# ls -ld /
drwxr-xr-x 25 root root 4096 Mar 12 2015 /
[root@localhost ~]# ls -al
total 88
drwxr-x--- 4 root root 4096 Dec 25 13:36 .
drwxr-xr-x 25 root root 4096 Mar 12 2015 ..
-rw------- 1 root root 11040 Dec 25 13:33 .bash_history
-rw-r--r-- 1 root root 24 Jan 6 2007 .bash_logout
-rw-r--r-- 1 root root 191 Jan 6 2007 .bash_profile
-rw-r--r-- 1 root root 493 Mar 10 2015 .bashrc
-rw-r--r-- 1 root root 100 Jan 6 2007 .cshrc
-rw------- 1 root root 16 Mar 9 2015 .mysql_history
drwx------ 2 root root 4096 Mar 12 2015 .ssh
-rw-r--r-- 1 root root 129 Jan 6 2007 .tcshrc
drwx------ 2 root root 4096 Dec 25 13:36 LINKTEST
[root@localhost ~]# ls -ali
[root@localhost ~]# ls -ali .ssh
total 16
329737 drwx------ 2 root root 4096 Mar 12 2015 .
262145 drwxr-x--- 4 root root 4096 Dec 25 13:36 ..
329738 -rw-r--r-- 1 root root 391 Mar 12 2015 known_hosts
======================================================
======================================================
[root@localhost LINKTEST]# ls
[root@localhost LINKTEST]# ls -ld
drwx------ 2 root root 4096 Dec 25 13:55 .
[root@localhost LINKTEST]# mkdir A
[root@localhost LINKTEST]# ls -ld
drwx------ 3 root root 4096 Dec 25 13:55 .
[root@localhost LINKTEST]# ls -ali A
total 8
262147 drwxr-xr-x 2 root root 4096 Dec 25 13:55 .
262146 drwx------ 3 root root 4096 Dec 25 13:55 ..
[root@localhost LINKTEST]# ls -ldi
262146 drwx------ 3 root root 4096 Dec 25 13:55 .
[root@localhost LINKTEST]# mkdir B
[root@localhost LINKTEST]# ls -ldi
262146 drwx------ 4 root root 4096 Dec 25 13:56 .
[root@localhost LINKTEST]# ls -lia B
total 8
262150 drwxr-xr-x 2 root root 4096 Dec 25 13:56 .
262146 drwx------ 4 root root 4096 Dec 25 13:56 ..
======================================================
======================================================
LAB>
-- 순서 --
1. 각 디렉토리의 아이노드 번호
2. 각 디렉토리의 하드링크 개수
-- 순서 --
# mkdir /LINKTEST
# ls -lid /
# ls -lia /LINKTEST
total 16
3768321 drwxr-xr-x 2 root root 4096 Apr 30 10:14 .
2 drwxr-xr-x 27 root root 4096 Apr 30 10:14 ..
# cd /LINKTEST
# mkdir a b
# ls -ial
total 32
3768321 drwxr-xr-x 4 root root 4096 Apr 30 10:22 .
2 drwxr-xr-x 27 root root 4096 Apr 30 10:14 ..
# ls -lid a b
3768322 drwxr-xr-x 2 root root 4096 Apr 30 10:22 a
3768323 drwxr-xr-x 2 root root 4096 Apr 30 10:22 b
# ls -lia b
total 16
3768323 drwxr-xr-x 2 root root 4096 Apr 30 10:22 .
3768321 drwxr-xr-x 4 root root 4096 Apr 30 10:22 ..
2. 각 디렉토리의 하드링크 개수
======================================================
'OS > [Linux] CentOS' 카테고리의 다른 글
[CentOS] 7-1. 리눅스퍼미션 (0) | 2016.07.02 |
---|---|
[CentOS] 6. 파일 권한 테스트 (0) | 2016.07.02 |
[CentOS] 4. 파일관련 명령어 (0) | 2016.07.02 |
[CentOS] 3. 절대경로 상대경로 (0) | 2016.07.02 |
[CentOS] 2. 디렉토리구조 (0) | 2016.07.02 |