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

+ Recent posts