2013-10-19

맥 마운틴 라이언에서 rsync 3.0.9로 업데이트 하기 (with homebrew)

맥은 모든 사용자가 타임머신을 쓰는 줄 알고, 백년 전 버젼의 rsync를 기본으로 넣어 놨다.

 

현재 rsync 버젼을 확인해 보자. 2.6.9일 것이다.

rsync --version

 

3.0.9로 업데이트를 하려면 brew로 업데이트를 하면 된다. homebrew설치법은 다음을 참고

http://brew.sh/

 

브루로 rsync 최신 버젼을 설치하는 법은 간단하다. 아마도 3.0.9 최신 안정판이 설치될 것이다. 자동 컴파일이라서 시간이 조금 걸릴 것이다.

brew install rsync

 

설치는 성공적으로 되었다. 하지만 한 가지 해결해야할 것이 있다. brew가 설치한 rsync의 경로는

 

/usr/local/bin/rsync

 

이곳이다. 하지만 시스템은 지정된 이 곳에서 rsync를 찾는다.

 

/usr/bin/rsync

 

다른 곳에 설치가 되었으니 두 개 버젼의 rsync가 설치되었고, 시스템에서 계속 예전 것을 사용 한다.

 

버젼을 확인해 보자. 하지만 여전이 2.6.9일 것이다.

rsync --version

 

이것을 고치는 방법은, 시스템 우선순위를 변경하여 시스템 파일을 건드리지 않고 해결하는 아주 스마트한 방법이 있다.

 

시스템 파일을 편집하자.

sudo nano /private/etc/paths

 

아마 다음과 같을 것이다.

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

 

/usr/bin이 가장 최상위 우선 순위가 있다. 우리가 쓰고 싶은 rsync는 /usr/local/bin에 있다. 그러므로 우선순위를 높여주면 된다.

/usr/local/bin
/bin
/usr/sbin
/sbin
/usr/bin

 

이렇게 바꾸고, 터미널을 닫고 rsync를 실행시키면 3.0.9로 찍힐 것이다.

Screen Shot 2013 10 19 at 4 04 03 AM

 

 

참고:

https://discussions.apple.com/message/19845786#19845786

맥/리눅스에서 복사 된 파일이 원본과 같은지 확인하는 방법. diff 명령어

복사를 하면 당연히 원본과 같아야 한다고 생각을 한다. 하지만 나같이 의심병 환자는 이런 것도 검사를 한다.

 

유닉스 명령어 중에 diff란 것이 있다. 원본 파일과 복사 된 파일이 같은지 확인해 준다. 파일도 가능하고 폴더도 가능하다.

 

백업 하드를 통채로 복사했는데 이게 같은 건지 의심이 들면 검사해 보자.

 

기본적으로 아무런 옵션이 없으면 같은 것과 다른 것을 모두 표시한다. 같은 것은 아니까, 다른 것만 검출하면 된다.

 

-q 옵션은 다른 것만 보여준다.

 

-r 옵션은 하위 디렉토리까지 검사한다.

 

합쳐서 -rq라고 줄 수 있다. -r -q 둘 다 쓸 수도 있다.

 

맥에서는 .DS_Store라는 숨김속성 페이징 파일이 있다. 그냥 시스템이 알아서 생성하는 것인데 매번 다른 파일이 생성되므로 이것은 제외해야 한다.

 

-x '파일명'을 치면 이 파일은 검사에서 제외한다. 그러므로 -x '.DS_Store'는 제외하자.

 

문법구조는 이렇다.

비교하라 -하위디렉토리까지 -다른것만검출 원본폴더 대상폴더 -제외할것 '제외할파일이름'

 

코드는 이렇게 된다.

diff -r -q 원본폴더 대상폴더 -x '.DS_Store'

 

실제 코드는 이런 식이다.

diff -r -q /Volumes/E.BAK-1T-HFSP/original/ /Volumes/E.TEST-120G-HFSP/copied/ -x '.DS_Store'

 

모든 파일을 검사하기에 시간이 좀 오래 걸린다.

 

 

참고:

http://www.mugginsoft.com/content/diff-ignoring-hidden-files

맥/리눅스, 터미널에서 퍼미션 755 스타일로 확인하기

퍼미션을 확인하려면

 

ls -l 로 확인이 가능하다.

Screen Shot 2013 10 18 at 5 22 20 PM

 

하지만 drwxfosfkeof 씨바 졸라 무슨 외계어 마냥 이해하기도 힘들고 보기도 불편하다.

 

그렇다 깔끔한 755 스타일로 바꿔보자! 755스타일에 대한 설명은 여기를 참고

http://blog.hansune.com/451

 

어자피 퍼미션 바꿀 때 755나 777 이런 식으로 하지 않는가? 그런데 저딴 식으로 나와서는 곤란하다. 그래서 바꿔보자!

 

755스타일을 구현하는 방식이다.

ls -l | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf("%0o ",k);print}'

 

드디어 알아볼 수 있게 나온다! 하지만 저 명령어는 무슨 외계어인지 알 수가 없다. awk라는 강력하고도 이상한 언어다.

Screen Shot 2013 10 18 at 5 26 37 PM

 

문제는 매번 이렇게 길게 명령어를 칠 수는 없으니 단축키로 등록하자!

 

방법1. 맥에서 하는 방법

 

파일을 만든다.  기본적으로 없다. (마운틴 라이언)

touch ~/.bash_profile

 

파일을 수정한다.

sudo nano ~/.bash_profile

 

이것을 추가한다. 나는 단축키로 lsn을 치면 저게 나오도록 했다. n은 nummeric permissions의 약자다.

alias lsn="ls -alG | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\" %0o \",k);print}'"

 

맥 터미널을 껏다가 켠다. lsn을 입력한다.

Screen Shot 2013 10 18 at 5 33 00 PM

 

훌륭하지 않은가? 매번 퍼미션 계산하고 앉아있는 상황은 피할 수 있다!

 

추가:

awk로 계산된 퍼미션 값이 나올 때 터미널 텍스트 색깔이 사라지는 문제가 있었는데, ls 앞에 CLICOLOR_FORCE=1을 붙여주면 된다.

alias lsn="CLICOLOR_FORCE=1 ls -alG | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\" %0o \",k);print}'"

 

색깔이 적용된 lsn을 실행시켜 보면 이렇게 잘 나온다.

Screen Shot 2013 10 19 at 7 38 18 AM

 

방법2. 리눅스에서 하는 방법.

리눅서들은 대부분 고수일 테니까 이것만 알려줘도 될 것 같다.

맥에서는  ~/.bash_profile 이것을 수정하지만, 리눅스에서는 조금 다르다.

 

경우1> 콘솔만 사용하는 경우 (라즈베리파이의 경우)

홈폴더에 있는 ~/.profile 을 수정하면 된다.

 

경우2> X-window에서 Terminal을 사용하는 경우 (Ubuntu의 경우)

홈폴더에 있는 ~/.bashrc 를 수정한다.

 

텍스트 색깔이 안 나오는 버젼

#without color
#alias lsn="ls -alG | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\" %0o \",k);print}'"

텍스트 색깔이 나오는 버젼 --color=always를 추가해 준다. 이것은 ls 옵션 중 하나이다.

#with color
alias lsn="ls -alG --color=always | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\" %0o \",k);print}'"

 

리눅스에서도 색깔이 적용된 lsn을 볼 수 있다. 물론 숫자 퍼미션도 잘 나온다!

Screen Shot 2013 10 19 at 7 35 57 AM 

 

감사:

우분투한국사용자모임에서 질문에 도움을 주신 최정환님께 감사드린다.

색깔이 사라지는 문제는 최민호님이 해결해 주셨다. 감사드린다.

 

완성된 코드를 첨부한다.

###### Terminal coloring Settings
### change terminal color by jong
### this is the original file.
### http://stackoverflow.com/questions/1550288/mac-os-x-terminal-colors

# enable coloring for terminal
export CLICOLOR=1

# enable coloring forced in all area
export CLICOLOR_FORCE=1

### prompt sets
##mac default
#export PS1="\h:\W \u\$ "
##raspbian
#export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w \$\[\033[00m\] "
##custom-1 (good) (/w blue 01;34m)
#export PS1="\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w\[\033[00m\] $ "
##custom-2 (good) (/w cyan ~ 01;36m)
export PS1="\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;36m\]\w\[\033[00m\] $ "

### LSCOLOR sets
## default LSCOLOR
#export LSCOLORS=exfxcxdxbxegedabagacad
## white theme
#export LSCOLORS=ExFxBxDxCxegedabagacad
## dark theme
#export LSCOLORS=GxFxCxDxBxegedabagaced
## custom-1
#export LSCOLORS=GxFxCxDxBxegedabagaced
#export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
## custom-2 (good)
#export LSCOLORS=Exfxcxdxbxegedabagacad
##custom-3 (good)
export LSCOLORS=ExFxCxDxBxegedabagacad

 

###### making sh alias

### lsn -al with numberic permissions with coloring
### http://agileadam.com/ls-al-octal-permissions
alias lsn="ls -alG | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\" %0o \",k);print}'"

###EOF

 

참고:

http://agileadam.com/ls-al-octal-permissions

2013-10-17

맥에서 터미널 색깔 나오게 만들기, 마운틴라이언

맥에서 터미널은 단색이다. 재미없으니 바꿔보자.

 

먼저 배쉬프로파일을 만들자. 이 파일은 원래 없으니 새로 만든다.

touch  ~/.bash_profile

 

만든 프로파일을 수정하자.

sudo nano ~/ .bash_profile

 

새로 만든 파일이므로 파일을 열면 아무것도 없다. 이 부분을 넣어준다.

export CLICOLOR=1

export LSCOLORS=GxFxCxDxBxegedabagaced

 

설명이다. "export CLICOLOR=숫자" 은 칼라설정이 가능하게 해 주는 것이다. 1은 키고 0은 설정을 끄는 것. 

설명이다. "LSCOLOR=알파벳" 은 칼라를 어떻게 보여줄 것인지 설정하는 것이다. 값은 모르겠으나 그냥 이렇게 써도 되고 고쳐도 된다.

 

결과는 이렇게 된다. 그렇게 예쁘진 않은데, 저 칼라 수정을 변경해 봐야겠다.

Screen Shot 2013 10 17 at 1 09 46 PM

 

참고:

http://stackoverflow.com/questions/1550288/mac-os-x-terminal-colors

http://it.toolbox.com/blogs/lim/how-to-fix-colors-on-mac-osx-terminal-37214

http://osxdaily.com/2012/02/21/add-color-to-the-terminal-in-mac-os-x/

 

라즈베리파이에서 뜬금없이 locale 에러 날 때

Ubuntu 12.04에서 SSH로 라즈베리파이를 사용하고 있었다.

시작프로그램에 뭘 좀 등록하려고 했다.
sudo update-rc.d jong-DisableConsoleBlank defaults

그런데 이런 에러메세지가!!
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = "en_US.UTF-8",
LC_ADDRESS = "en_US.UTF-8",
LC_MONETARY = "en_US.UTF-8",
LC_NUMERIC = "en_US.UTF-8",
LC_TELEPHONE = "en_US.UTF-8",
LC_IDENTIFICATION = "en_US.UTF-8",
LC_MEASUREMENT = "en_US.UTF-8",
LC_TIME = "en_US.UTF-8",
LC_NAME = "en_US.UTF-8",
LANG = "en_GB.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
update-rc.d: using dependency based boot sequencing

당황했다. 확인해 보니 문제는 라즈베리파이가 아니라 우분투 터미널의 문제였다! 이럴수가...

이런 문제가 생기면 우분투 컴퓨터의 파일을 수정해 줘야한다. (라즈베리파이가 아니다!)
sudo nano /etc/ssh/ssh_config

백업을 한다.
cp /etc/ssh/ssh_config /etc/ssh/ssh_config.original

이것을 삭제하거나 코멘트처리한다. 코멘트처리는 앞에 #을 붙이면 된다.
SendEnv LANG LC_*



참고:
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=50&t=11870

fdisk로 파티션 만들고 볼륨 라벨 붙이기.

현재 디스크를 확인한다.

sudo fdisk -l 

 

파티션을 만들거나 재 생성할 것을 고른다. (주의해라! 망하면 ㅈ됀다)

sudo fdisk /dev/sdX

 

기본 설명이다. m을 누르면 도움말이 뜬다. 중요한 것을 적어본다.

 

m - print help (도움말 출력)

p - print the partition table (현재 파티션을 보여준다)

n - create a new partition (새 파티션을 만든다)

d - delete a partition (파티션을 지운다)

q - quit without saving changes (저장하지 않고 나가기)

w - write the new partition table and exit (저장하고 나가기)

 

 

파티션을 삭제한다. (조심해라! ㅈ됀다)

d

 

새 파티션을 만든다.Partition number (1-4, default 1): 

n

 

그러면 물어본다.

 

Partition type:

   p   primary (0 primary, 0 extended, 4 free)

   e   extended

 

p를 누른다. extended는 파티션을 여러 개로 나눌 것 아니면 필요없다.

 

파티션 넘버를 물어본다.

Partition number (1-4, default 1): 

1이 기본이다. 1을 누르거나 엔터를 치면 그냥 된다.

 

첫번째 섹터가 어디냐고 묻는다. 그런 거 모른다. 그냥 기본 값을 쓴다. 엔터를 치면 2048로 된다.

First sector (2048-1953525167, default 2048): 

 

마지막 섹터를 물어본다. 이것도 그냥 기본 값으로 한다. 엔터를 치자.

Last sector, +sectors or +size{K,M,G} (2048-1953525167, default 1953525167): 

 

작업이 끝났으니 w를 눌러 저장하고 나오자.

w를 누른다.

 

만들어진 파티션을 확인해 보자.

sudo fdisk -l 

 

파티션을 했으니 포맷을 해야한다. 나는 ext4로 포맷 하겠다. ext3로 하려면 mkfs.ext3로 하면 된다. (주의해라 실수하면 ㅈ망한다)

mkfs.ext4 /dev/sdXx

 

디스크에 이름을 붙여준다. 볼륨 라벨이라고 하는데 없으면 섭하다. e2label은 ext2,3,4 볼륨 라벨을 붙여주는 프로그램 이름이다.

sudo e2label /dev/sdxX 볼륨라벨

 

이름이 잘 붙었나 확인해 본다.

sudo e2label /dev/sdxX

 

포맷을 완료했다. format c:보다 좀 많이 어렵다. 무서운 작업이니 주의하자.

 

참고:

http://manpages.ubuntu.com/manpages/precise/man8/e2label.8.html

 

  • m - print h
  • elp
  • p - print the partition table
  • n - create a new partition
  • d - delete a partition
  • q - quit without saving changes
  • - write the new partition table and exit

disk mounting by Disk Label

sdxX 순서가 계속 바뀌므로, Disk Label로 마운트를 하는 게 좋다.


 

마운트하기

 

$ sudo mount -L 디스크라벨 /마운트할/위치/

 

 

 

예시

 

$ sudo mount -L NAS-1T-EXT4 /mnt/NAS-1T-EXT4/