리눅스 하드 링크와 소프트 링크 및 LN의 파일의 사용에

면책 조항 :이 문서는 블로거 원본입니다, 추적 에 의해-SA의 CC 4.0 저작권 계약, 복제, 원본 소스 링크이 문을 첨부 해주세요.
이 링크 : https://blog.csdn.net/LEON1741/article/details/100136449

공유 파일을 해결하는 데 사용할 수있는 파일이라는 리눅스 시스템의 파일에 대한 링크가 있습니다. 링크는 하나는 다른도 소프트 링크 또는 심볼릭 링크 (심볼 링크)로 언급되고, 하드 링크 (하드 링크)이며, 두 종류로 나눌 수있다.

첫째, 기본 개념

1, 하드 링크

시작하기 전에 먼저 아이 노드 (소유자의 그룹 아이디)라는 개념을 설명한다.

리눅스 파일 시스템에 관계없이 어떤 종류의 디스크 파티션에 파일을 저장, 시스템이 그것에게 번호를 할당되며,이 숫자는 파일 리눅스에서 파일이나 디렉토리는 아이 노드 번호 (소유자의 그룹 아이디 색인)라고 고유 식별 시스템. 이 숫자 값으로, 파일의 세부 사항에서 확인할 수 있습니다.

동시에, 리눅스 시스템은 또한 같은 아이 노드 (최종 변경)에 대한 하드 링크, 즉 동안 그 여러 파일 이름을 허용 할 수 있습니다. 이 디자인은, 한 개 이상의 링크가 파일의 아이 노드로, 아이 노드 자체와 다른 링크 (즉, 삭제되지 않는 파일의 실체이다)에 영향을 미치지 않는 링크를 삭제 장점을 가지고 있으며, 경우에만 마지막 링크를 삭제하고, 이번에는 디스크에 저장하는 새로운 데이터가 된 후, 다음 삭제 된 파일의 데이터 블록 및 디렉토리가 발표 될 예정이다 연결, 저장 공간은 새로운 데이터로 덮어 쓰게됩니다. 따라서,이 메커니즘은 잘못된 효과적으로 삭제 조작을 방지 할 수있다.

하드 링크는 전용 파일 시스템의 동일한 유형에 링크 할 수 있습니다, 파일 시스템은 교차 할 수 없습니다. 이 파일에 연결 만 할 수있는 동시에, 당신은 디렉토리를 링크 할 수 없습니다.

2, 소프트 링크

다른 하드 링크 윈도우 시스템에서 바로 가기 유사 (또한 심볼릭 링크라고도 함) 소프트 링크,,, 소프트 링크는 일반 파일, 조금 특별한 데이터 블록의 내용, 사용자 데이터 블록이 다른 파일에 저장되어있는 파일의 내용입니다 신속의 방법으로 개체에게 부드러운 연결 지점을 찾을 수있는 소스 파일의 경로 이름을 가리 킵니다.

이러한 파일 시스템 공간이 부족의 문제를 해결하는 데 사용 소프트 링크는 공간이 부족했다,하지만 지금은 파일의 많은 수의 파일 시스템에 새로운 디렉토리를 생성하고 저장해야합니다, 당신은 다른 나머지 공간을 더 많이 넣을 수 있습니다 파일 시스템 디렉토리는 파일 시스템에 연결되어 있습니다.

소프트 링크, 파일 시스템과 링크를 확장 할 수 동시에 파일이나 디렉토리에 링크 할 수 있습니다.

3. 두 개의 차이점

  • 경로가 다른 파일, 파일의 복사본의 형태로 하드 링크에 대한 소프트 링크의 형태로 저장;
  • 다른 파일 시스템과 하드 링크가 할 수없는 링크를 통해 소프트 링크;
  • 소프트 링크는 디렉토리에 링크 할 수 있으며, 하드 링크는 할 수 없습니다;
  • 소프트 링크가 존재하지 않는 파일 이름에 링크 할 수 있습니다, 하드 링크 원본 파일이 있어야합니다.
  • 파일에 영향을주지 않습니다 소프트 링크 삭제가에 지적하지만, 원본 파일의 포인트가 삭제 된 경우, 관련 부드러운 연결은 죽은 링크가된다. 너무 오래 inode 번호가 0이 아닌 한, 원본 파일은 영향을주지 않습니다, 하드 링크를 삭제;

참고 : 소프트 또는 하드 링크가 완전히 대상 파일의 원본을 연결 있지만 저장 공간의 아주 작은 금액을 차지하지할지 여부를 지정합니다.

둘째, 방법은 만들 수 있습니다 (명령 LN)

소프트 링크와 하드 링크는하지만, 다른 매개 변수, ln 명령을 사용하여 만들어집니다. 다음과 같이 명령의 형식은 다음과 같습니다

ln 参数 源文件或目录 目标文件或目录

참고 : 소스 및 대상 디렉토리는 절대 경로 여야합니다!

매개 변수 :

  • -i 대화 형 모드, 사용자는 파일 범위의 존재 여부를 묻는 메시지가 표시됩니다;
  • -s 소프트 링크 (심볼릭);
  • -d 슈퍼 사용자가 디렉토리에 대한 하드 링크를 만들 수 있습니다;
  • -b 이전에 설정된 링크를 포함하는, 삭제;
  • -f 시행;
  • 일반적으로 심볼릭 링크 디렉토리로 간주 -n;
  • -v 상세한 처리 순서를 표시;

그래서, 요약 :

  • (심볼릭 링크)을 사용하여 소프트 링크를 만듭니다ln -s source target
  • (물리적 링크)를 사용하여 하드 링크를 만듭니다ln source target

예를 들면 :

--------------------------------------------------------------------------------------------------------
leon@Ubuntu:~/temp$ ll													# 首先创建一个测试目录和测试文件
total 16
drwxrwxr-x  3 leon leon 4096 Aug 29 14:21 ./
drwxr-xr-x 23 leon leon 4096 Aug 29 14:20 ../
drwxrwxr-x  2 leon leon 4096 Aug 29 14:21 testdir/
-rw-rw-r--  1 leon leon   40 Aug 29 14:21 testfile
--------------------------------------------------------------------------------------------------------
leon@Ubuntu:~/temp$ ln testdir hard_link								# 不能对目录创建硬链接
ln: testdir: hard link not allowed for directory
--------------------------------------------------------------------------------------------------------
leon@Ubuntu:~/temp$ ln -s testdir soft_link_for_dir						# 可以对目录创建软链接
leon@Ubuntu:~/temp$ ll
total 16
drwxrwxr-x  3 leon leon 4096 Aug 29 14:26 ./
drwxr-xr-x 23 leon leon 4096 Aug 29 14:20 ../
lrwxrwxrwx  1 leon leon    7 Aug 29 14:26 soft_link_for_dir -> testdir/
drwxrwxr-x  2 leon leon 4096 Aug 29 14:21 testdir/
-rw-rw-r--  1 leon leon   40 Aug 29 14:21 testfile
--------------------------------------------------------------------------------------------------------
leon@Ubuntu:~/temp$ ln testfile hard_link_for_file						# 可以对文件创建硬链接
leon@Ubuntu:~/temp$ ll
total 20
drwxrwxr-x  3 leon leon 4096 Aug 29 14:27 ./
drwxr-xr-x 23 leon leon 4096 Aug 29 14:20 ../
-rw-rw-r--  2 leon leon   40 Aug 29 14:21 hard_link_for_file
drwxrwxr-x  2 leon leon 4096 Aug 29 14:21 testdir/
-rw-rw-r--  2 leon leon   40 Aug 29 14:21 testfile
--------------------------------------------------------------------------------------------------------
leon@Ubuntu:~/temp$ ln -s testfile soft_link_for_file					# 可以对文件创建软链接
leon@Ubuntu:~/temp$ ll
total 20
drwxrwxr-x  3 leon leon 4096 Aug 29 14:28 ./
drwxr-xr-x 23 leon leon 4096 Aug 29 14:20 ../
lrwxrwxrwx  1 leon leon    8 Aug 29 14:28 soft_link_for_file -> testfile
drwxrwxr-x  2 leon leon 4096 Aug 29 14:21 testdir/
-rw-rw-r--  2 leon leon   40 Aug 29 14:21 testfile
--------------------------------------------------------------------------------------------------------

셋째,주의

1, 전에 디렉토리에 소프트 링크를 만들 디렉토리를 직접 ln 명령이 자동으로 설정됩니다 사전에 설정된 대상으로하지 않습니다. 당신 앞서 대상 디렉토리의 설립 후, 대상 디렉토리를 설정 ln 명령을 사용하는 경우주의해야되는 중첩됩니다!

leon@Ubuntu:~/temp$ ll testdir/												# 首先查看下源目录下的文件情况
total 8
drwxrwxr-x 2 leon leon 4096 Aug 29 14:29 ./
drwxrwxr-x 3 leon leon 4096 Aug 29 14:28 ../
-rw-rw-r-- 1 leon leon    0 Aug 29 14:29 test

# 下面的语句是直接创建软链接,可以看出软链接的结果是正确的
leon@Ubuntu:~/temp$ ln -s testdir soft_link_for_dir							# 创建软链接1
leon@Ubuntu:~/temp$ ll soft_link_for_dir									# 查看软链接1的详情
lrwxrwxrwx 1 leon leon 7 Aug 29 14:26 soft_link_for_dir -> testdir/

# 下面的语句是先创建好目标目录,然后再创建软链接。可以看出软链接的结果是不正确的
leon@Ubuntu:~/temp$ mkdir soft_link_for_dir2								# 先创建一个目录
leon@Ubuntu:~/temp$ ln -s testdir soft_link_for_dir2						# 然后再创建软链接2
leon@Ubuntu:~/temp$ ll soft_link_for_dir2									# 查看软链接2的详情
total 8
drwxrwxr-x 2 leon leon 4096 Aug 29 14:34 ./
drwxrwxr-x 4 leon leon 4096 Aug 29 14:34 ../
lrwxrwxrwx 1 leon leon    7 Aug 29 14:34 testdir -> testdir

당신이 디렉토리에 소프트 링크를 만들 때 2는 '/'문자를 가지고, 또는 소프트 링크는 또한 '/'기호를 수행한다 소스 디렉토리를 지적 생성하지 않습니다. 표면에있는 동안은 정상 방문을 것으로 보인다,하지만 특정 상황에서 문제가 발생하는 것을 보장 할 수 없습니다. 또한 조심해야한다!

leon@Ubuntu:~/temp$ ln -s testdir/ soft_link_for_dir1						# 不建议这么操作
leon@Ubuntu:~/temp$ ln -s testdir soft_link_for_dir2						# 这才是正确的
leon@Ubuntu:~/temp$ ll
total 16
drwxrwxr-x  3 leon leon 4096 Aug 29 15:41 ./
drwxr-xr-x 23 leon leon 4096 Aug 29 14:20 ../
lrwxrwxrwx  1 leon leon    8 Aug 29 15:40 soft_link_for_dir1 -> testdir//
lrwxrwxrwx  1 leon leon    7 Aug 29 15:41 soft_link_for_dir2 -> testdir/
drwxrwxr-x  2 leon leon 4096 Aug 29 14:29 testdir/
-rw-rw-r--  1 leon leon   40 Aug 29 14:21 testfile

당신이 소프트 링크를 제거하면 3. '/'문자를 수행 할 수 없거나 오히려 소프트 링크 자체보다, 소프트 링크 대상 디렉토리 아래에 해당 리소스 (예 : 소스 파일)을 제거합니다.

--------------------------------------------------------------------------------------------------------
leon@Ubuntu:~/temp$ rm -rf soft_link_for_dir1								# 这是正确的删除软链接的方式
leon@Ubuntu:~/temp$ ll														# 当前目录下的链接文件已经被删了
total 16
drwxrwxr-x  3 leon leon 4096 Aug 29 15:53 ./
drwxr-xr-x 23 leon leon 4096 Aug 29 14:20 ../
drwxrwxr-x  2 leon leon 4096 Aug 29 14:29 testdir/
-rw-rw-r--  1 leon leon   40 Aug 29 14:21 testfile
leon@Ubuntu:~/temp$ ls -al testdir/											# 并且,源目录下的原始文件还在
total 12
drwxrwxr-x 2 leon leon 4096 Aug 29 15:55 .
drwxrwxr-x 3 leon leon 4096 Aug 29 15:54 ..
-rw-rw-r-- 1 leon leon   18 Aug 29 15:53 new_file
--------------------------------------------------------------------------------------------------------
leon@Ubuntu:~/temp$ rm -rf soft_link_for_dir/								# 这是错误的删除软链接的方式
leon@Ubuntu:~/temp$ ll														# 当前目录下的链接文件没有被删掉
total 16
drwxrwxr-x  3 leon leon 4096 Aug 29 15:54 ./
drwxr-xr-x 23 leon leon 4096 Aug 29 14:20 ../
lrwxrwxrwx  1 leon leon    7 Aug 29 15:54 soft_link_for_dir -> testdir/
drwxrwxr-x  2 leon leon 4096 Aug 29 15:54 testdir/
-rw-rw-r--  1 leon leon   40 Aug 29 14:21 testfile
leon@Ubuntu:~/temp$ ls -al testdir/											# 而源目录下的原始文件却被删掉了
total 8
drwxrwxr-x 2 leon leon 4096 Aug 29 15:54 .
drwxrwxr-x 3 leon leon 4096 Aug 29 15:54 ..
--------------------------------------------------------------------------------------------------------

추천

출처blog.csdn.net/LEON1741/article/details/100136449