Monday, May 25, 2015

Symbolic Link

Symbolic Link

Symbolic Link


;; =================================================
;; εμαcs is ⎋[esc]⌘[meta]⌥[alt]⌃[ctrl]⇧[shift].
;; =================================================

이 문서는 emacs org-mode로 작성된 글입니다.


System Environments

Operating Systems

  • Main- : OS X Yosemite (10.10.3)
  • Sub- : Debian GNU/Linux Wheezy (7.8)
  • Server: Debian GNU/Linux Wheezy || Squeeze
  • Mobile: iOS 7.1.2

간단히, 하나(혹은 여럿)의 OS 안에서 파일이나 폴더를 서로 sync시키는 거라고 이해하면 된다. 한 쪽에서 고치면 다른 쪽도 당연히 변경됨은 물론이고, 원본이 있는 곳을 제외하고는 용량을 차지하지 않는다.

언제 필요한가?

위의 개념에서 그 필요성이 저절로 설명되지만, 구체적으로 적어보자면 다음과 같은 몇 가지 예를 들 수 있다.

  • Coding을 하는데 있어서 일종의 나만의 library 만들고 거기서 불러올 때. 내 경우, 하나의 BibTeX 파일에 내 모든 bibliography 정보를 다 넣어두고, 이 파일을 작업 중인 LaTeX project가 있는 곳에 symbolic link를 시킨다. 원본과 다른 이름을 쓸 수 있는 것은 물론, 하나의 원본을 여러 곳에 symbolic link 시킬 수도 있다.
  • DropBox 같은 서비스를 통해서 백업할 때. 굳이 Dropbox 폴더에서 작업을 하고 백업을 하는 것이 아니라, 원래 하던 데로 적당한 폴더에서 작업한 후에, 이 폴더를 Dropbox 폴더 아래에 symbolic link를 시키면 간단하고 용량도 절약할 수 있다. 당연히 한 번 설정하면, 원본이나 symbolic link한 파일(혹은 폴더) 어디서 수정해도 계속 변경 사항이 반영되고 항상 백업한다.
  • 홈서버에서 ftp나 sftp를 쓰고자 할 때. 서로 다른 계정에 같은 정보를 저장할 필요 없이, 각각에 symbolic link 시키면 된다.

FYI) 위에서 "symbolic link한 파일이나 폴더를 수정한다" 는 말은 기술적으로 맞는 말은 아니다. File browser(Finder, Thunar, Dolphin, or etc)에서 symbolic link한 파일(혹은 폴더)를 열면, 자동으로 원본을 찾아서 그것을 연다.

FYI) SpiderOak는 symbolic link를 무시한다. 파일이건 폴더건 상관없이 아예 sync 시키지를 않는다.

특징

원본의 경로가 변경되거나 지워지면, symbolic link한 대상 자체는 그대로 있지만 원본의 정보를 잃는 것이 symbolic link의 특징 중 하나다. 하드드라이브에 partition이 여럿 존재하는 경우에도, 동일 partition 안에서만 동작하는 것이 아니라 다른 partition 안의 것 또한 link 시킬 수 있다. Volume이 다른 경우(외장하드, USB, 등)도 가능하고, 심지어는 다른 File systems(예, 네트워크 드라이브)도 다룰 수 있다. 물론 시스템을 재시동해서 외장하드가 아직 mount되지 않았거나 네트워크 드라이브가 연결이 끊기면, symbolic link한 대상이 원본의 정보를 잠시 잃는다. 하지만, 다시 mount 하거나 네트워크를 연결시키면 symbolic links는 제대로 동작한다.

FYI) OSX의 Finder에서 지원하는 Make Aliassymbolic link는 조금 다르다. OSX의 aliashard link에 가깝다. 그래서 OSX의 alias는 위에서 언급한 symbolic link의 장점들을 하나도 누릴 수 없다. 구체적으로, LaTeX project에서 OSX의 alias를 부를 수 없으며, Dropbox 폴더에 만든 OSX의 alias는 백업도 안된다.

사용법

Bash(Terminal.app in OSX)를 열어 다음을 실행한다.

$cd directory_where_you_wanna_locate_symbolic_linked_target
$ln -s target_you_wanna_copy name_you_want

여기서, directory_where_you_wanna_locate_symbolic_linked_target 은 symbolic link로 만든 파일(혹은 폴더)를 놓을 곳의 경로를 의미한다. target_you_wanna_copy 은 symbolic link 싶은 파일(혹은 폴더)을 의미하는데 경로까지 완전히 적어야 하고, name_you_want 은 본인 원하는 이름을 적으면 된다. 원본 이름을 그대로 쓰고 싶을 때는 후자는 생략 가능하다. 예를들어, 자신의 홈폴더 아래 Downloads에 있는 testDirectory의 이름의 폴더를 홈폴더 아래 Dropbox에 symLink라는 새이름으로 symbolic link를 시켜서 백업을 하고 싶은 경우에는 다음과 같이 하면 된다.

$cd ~/Dropbox
$ln -s ~/Download/testDirectory symLink

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Created: 2015-05-25 Mon 13:00

Emacs 23.4.1 (Org mode 8.0.2)

No comments:

Post a Comment