검색 엔진의 방문이 늘어나고 있군...

Posted
Filed under 프로그램과 명령어/관리와 유지보수
참조 원문: RHEL 7 / CentOS 7 : Single User Mode / Recovering / Reset Root Password

기존 RHEL/CentOS 5~6까진 '싱글 유저 모드'라는 상태에서 패스워드를 복구했지만 RHEL/CentOS 7부터는 그것이 '복구 모드(Rescue Mode)' 또는 '비상 모드(Emergency Mode)'라는 이름으로 바꼈습니다. 아래는 root 패스워드를 다시 설정하는 방법입니다.

  1. 부팅해서 GRUB 2 부트 스크린이 나왔을 때 e 키를 눌러 수정 모드로 진입
  2. 'linux' 라인(UEFI의 경우 'linuxefi' 라인)의 끝에 아래의 파라미터를 추가(VMware, KVM, VirtualBox에서는 아래 대신 'rb.break'라고 적는다.
    init=/bin/sh
    이러면 리눅스 커널이 시스템 init 데몬 대신 /bin/sh를 실행할 것이다. 그러므로 일부 기능의 사용이 제한되거나 불가할 수 있다.
    중요: 부팅 메시지를 보려면 'rhgb'와 'quiet' 파라미터가 없어야 한다.
  3. Ctrl+x를 눌러 지정한 파라미터로 부팅을 한다. 쉘 프롬프트가 나타날 것이다.
  4. 파일 시스템은 읽기 전용으로 마운트 된다. 파일시스템에 쓰기를 할 수 없다면 패스워드를 바꿀 수 없으므로 아래 명령어를 통해 다시 마운트한다.
    # mount -o remount,rw /
  5. 'passwd' 명령어를 실행하여 패스워드를 변경한다. 참고로 쓰기가 불가능한 상태라면 명령어 사용 시 아래의 에러를 보게 된다.
    Authentication token manipulation error
  6. 변경된 파일의 SELinux 컨텍스트가 부팅 후 적절히 복구될 수 있도록 아래 명령어를 실행한다.
    # touch /.autorelabel
  7. 'exec /sbin/init' 명령어를 실행하여 시스템 부팅을 재개한다. exec 명령어로 다른 명령어를 실행하면 새로운 프로세스를 생성하고 쉘을 그 프로세스로 교체하는데 이 경우 쉘이 init으로 교체가 된다. 또 다른 방법으로는 'exec /sbin/reboot' 명령어를 실행하여 시스템을 리부팅하는 방법이 있다.
2014/11/17 17:10 2014/11/17 17:10
Posted
Filed under 프로그램과 명령어/관리와 유지보수
참조 원문 : 10 basic examples of Linux ps command

  ps 명령어는 시스템에서 실행 중인 프로세스를 보는 가장 기본적인 명령어 중 하나입니다. 유저 id, CPU 사용률, 메모리 사용률, 명령어 이름 등의 정보를 제공하죠. 다만 top이나 htop 명령어와 달리 실시간으로 보여주진 않습니다. 그래도 리눅스 사용자라면 기본적으로 알아야 합니다.

  ps 명령어에는 2가지의 사용법이 있습니다. 바로 BSD 방식과  UNIX 방식이죠. ps를 처음 배울 땐 두 방식이 있다는 것조차 모르는 경우가 많고 알아도 잘못 사용하는 경우가 많습니다. 예를 들어 "ps aux"는 "ps -aux"와 다릅니다. "-u"는 특정 유저의 프로세스를 볼 때 사용하고 "u"는 자세한 정보를 출력시킬 때 사용합니다.

  BSD 방식은 옵션 앞에 "-"를 붙이지 않습니다.
ps aux
  UNIX/LINUX 방식은 옵션 앞에 "-"를 붙입니다.
ps -ef
  리눅스의 경우 두 방식을 동시에 사용하는 것이 가능합니다. 예를 들어 "ps ax -f" 같은 것도 실행할 수 있습니다.


1. 모든 프로세스 출력
  아래의 명령어로 모든 프로세스를 볼 수 있습니다. 파이프로 출력을 "less" 같은 명령어에 넘기면 스크롤하며 볼 수 있습니다.
$ ps ax
$ ps -e
  "u"나 "-f" 옵션을 사용하면 자세한 정보를 볼 수 있습니다.
$ ps aux
$ ps -ef
  참고로 유저명이 8글자를 넘을 경우 공간 때문에 유저명 대신 UID가 USER 칼럼에 표시됩니다.

2. 특정 유저의 프로세스 출력
  특정 유저가 소유한 프로세스만 보고 싶을 경우 "-u" 옵션 뒤에 유저명을 입력하면 됩니다. 콤마로 여러 유저명을 입력할 수 있습니다.
$ ps -f -u www-data
UID        PID  PPID  C STIME TTY          TIME CMD
www-data  1329  1328  0 09:32 ?        00:00:00 nginx: worker process
www-data  1330  1328  0 09:32 ?        00:00:00 nginx: worker process
www-data  1332  1328  0 09:32 ?        00:00:00 nginx: worker process
www-data  1377  1372  0 09:32 ?        00:00:00 php-fpm: pool a.localhost                                              
www-data  1378  1372  0 09:32 ?        00:00:00 php-fpm: pool a.localhost                                              
www-data  4524  2359  0 10:03 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  4527  2359  0 10:03 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  4528  2359  0 10:03 ?        00:00:00 /usr/sbin/apache2 -k start

3. 이름이나 프로세스 id로 출력
  프로세스의 이름이나 실행할 때 사용한 명령어로 프로세스를 찾으려면 "-C" 옵션 뒤에 검색할 단어를 입력합니다.
$ ps -C apache2
  PID TTY          TIME CMD
 2359 ?        00:00:00 apache2
 4524 ?        00:00:00 apache2
 4525 ?        00:00:00 apache2
...
  프로세스 id로 검색하려면 "-p" 옵션 뒤에 (콤마로 나눠서)프로세스 id들을 입력합니다.
$ ps -f  -p 3150,7298,6544
  "-C" 옵션을 사용할 땐 프로세스의 이름을 정확히 적어야 하며 부분적으로 적거나 와일드카드를 사용할 순 없습니다. 그렇기 때문에 일반적으로 프로세스를 검색할 땐 grep 명령어를 사용합니다.
$ ps -ef | grep apache

4. CPU나 메모리 사용률로 정렬
  시스템 관리자라면 메모리나 CPU를 많이 차지하는 프로세스를 찾을 때가 많습니다. 정렬 옵션을 사용하면 특정 필드나 파라미터를 기준으로 프로세스 목록을 정렬할 수 있습니다.

  다수의 필드를 기준으로 삼을 때는 "--sort" 옵션 뒤에 원하는 필드들을 콤마로 구분하여 적으면 됩니다. 또한 각 필드명 앞에 "-"나 "+"를 붙여 각각 내림차순이나 오름차순으로 정렬이 가능합니다.
$ ps aux --sort=-pcpu,+pmem
  아래는 CPU를 가장 많이 소모하고 있는 프로세스 5개를 보는 모습입니다.
$ ps aux --sort=-pcpu | head -5
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  2.6  0.7  51396  7644 ?        Ss   02:02   0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 23
root      1249  2.6  3.0 355800 30896 tty1     Rsl+ 02:02   0:02 /usr/bin/X -background none :0 vt01 -nolisten tcp
root       508  2.4  1.6 248488 16776 ?        Ss   02:02   0:03 /usr/bin/python /usr/sbin/firewalld --nofork
silver    1525  2.1  2.3 448568 24392 ?        S    02:03   0:01 /usr/bin/python /usr/share/system-config-printer/applet.py

5. 트리 형태로 보기
  프로세스 중 다수는 다른 부모 프로세스로부터 fork된 것이며 이 부모와 자식 관계를 파악하는 것이 중요할 때가 있습니다. 아래는 이름이 apache2인 프로세스를 검색하여 트리 형태로 출력하는 모습입니다.
$ ps -f --forest -C apache2
UID        PID  PPID  C STIME TTY          TIME CMD
root      2359     1  0 09:32 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  4524  2359  0 10:03 ?        00:00:00  \_ /usr/sbin/apache2 -k start
www-data  4525  2359  0 10:03 ?        00:00:00  \_ /usr/sbin/apache2 -k start
www-data  4526  2359  0 10:03 ?        00:00:00  \_ /usr/sbin/apache2 -k start
www-data  4527  2359  0 10:03 ?        00:00:00  \_ /usr/sbin/apache2 -k start
www-data  4528  2359  0 10:03 ?        00:00:00  \_ /usr/sbin/apache2 -k start
  참고로 트리 형태로 출력할 땐 정렬을 사용하지 않아야 합니다.

6. 부모 프로세스의 자식 프로세스 출력
  아래는 apache 프로세스로부터 fork된 모든 프로세스를 찾는 예입니다.
$ ps -o pid,uname,comm -C apache2
  PID USER     COMMAND
 2359 root     apache2
 4524 www-data apache2
 4525 www-data apache2
 4526 www-data apache2
 4527 www-data apache2
 4528 www-data apache2
[term]

The first process that is owned by root is the main apache2 process and all other apache2 processes have been forked out of this main process. The next command lists all child apache2 processes using the pid of the main apache2 process

[term]
$ ps --ppid 2359
  PID TTY          TIME CMD
 4524 ?        00:00:00 apache2
 4525 ?        00:00:00 apache2
 4526 ?        00:00:00 apache2
 4527 ?        00:00:00 apache2
 4528 ?        00:00:00 apache2

7. 프로세스의 쓰레드 출력
  "-L" 옵션을 사용하면 프로세스들의 쓰레드들을 출력할 수 있습니다. 한 프로세스의 모든 쓰레드를 출력할 수도 있고 모든 프로세스의 쓰레드를 출력할 수도 있습니다. 아래는 PID가 3150인 프로세스가 소유한 모든 쓰레드를 보는 명령어입니다.
$ ps -p 3150 -L

8. 출력할 칼럼 지정
  원하는 칼럼들만 출력하게 할 수도 있습니다. 아래 명령어는 PID, 유저명, CPU, 메모리, 명령어 칼럼만 출력시키는 예입니다.
$ ps -e -o pid,uname,pcpu,pmem,comm
  칼럼명을 변경하는 것도 가능합니다.
$ ps -e -o pid,uname=USERNAME,pcpu=CPU_USAGE,pmem,comm
  PID USERNAME CPU_USAGE %MEM COMMAND
    1 root           0.0  0.0 init
    2 root           0.0  0.0 kthreadd
    3 root           0.0  0.0 ksoftirqd/0
    4 root           0.0  0.0 kworker/0:0
    5 root           0.0  0.0 kworker/0:0H
    7 root           0.0  0.0 migration/0
    8 root           0.0  0.0 rcu_bh
    9 root           0.0  0.0 rcuob/0
   10 root           0.0  0.0 rcuob/1

9. 프로세스가 존재한 시간 출력
  프로세스가 실행되고 나서 흐른 시간은 기본 상태에선 출력되지 않으며 "-o" 옵션을 사용해야 합니다.
$ ps -e -o pid,comm,etime

10. ps로 프로세스를 실시간으로 보기
  아래처럼 watch 명령어를 사용하면 실시간으로 프로세스를 관찰할 수 있습니다.
$ watch -n 1 'ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem,-pcpu | head -15'
Every 1.0s: ps -e -o pid,uname,cmd,pmem,pcpu --...  Sun Dec  1 18:16:08 2013

  PID USER     CMD                         %MEM %CPU
 3800 1000     /opt/google/chrome/chrome -  4.6  1.4
 7492 1000     /opt/google/chrome/chrome -  2.7  1.4
 3150 1000     /opt/google/chrome/chrome    2.7  2.5
 3824 1000     /opt/google/chrome/chrome -  2.6  0.6
 3936 1000     /opt/google/chrome/chrome -  2.4  1.6
 2936 1000     /usr/bin/plasma-desktop      2.3  0.2
 9666 1000     /opt/google/chrome/chrome -  2.1  0.8
 3842 1000     /opt/google/chrome/chrome -  2.1  0.8
 4739 1000     /opt/google/chrome/chrome -  1.8  1.0
 3930 1000     /opt/google/chrome/chrome -  1.7  1.0
 3911 1000     /opt/google/chrome/chrome -  1.6  0.6
 3645 1000     /opt/google/chrome/chrome -  1.5  0.4
 3677 1000     /opt/google/chrome/chrome -  1.5  0.4
 3639 1000     /opt/google/chrome/chrome -  1.4  0.4
  위 명령어를 사용하면 1초마다 출력이 갱신된다. 단, top은 기본적으로 CPU와 메모리 사용률을 종합적으로 비교하여 정렬하는 반면 위에서는 메모리를 먼저 비교 후 CPU 사용률을 비교하여 정렬했기 때문에 결과는 서로 다를 것이다.
2013/12/05 15:40 2013/12/05 15:40
Posted
Filed under 프로그램과 명령어/관리와 유지보수
참조 원문 : Rsync (Remote Sync): 10 Practical Examples of Rsync Command in Linux

1. 로컬에 있는 파일과 디렉토리의 복사/동기화
로컬 컴퓨터에 있는 파일 복사/동기화
# rsync -zvh backup.tar /tmp/backups/
created directory /tmp/backups
backup.tar
sent 14.71M bytes  received 31 bytes  3.27M bytes/sec
total size is 16.18M  speedup is 1.10
  위의 예에서 목적지가 존재하지 않았다면 rsync가 목적지 디렉토리를 자동으로 만들어준다.

로컬 컴퓨터에 있는 디렉토리 복사/동기화
# rsync -avzh /root/rpmpkgs /tmp/backups/
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm
rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm
rpmpkgs/nagios-3.5.0.tar.gz
rpmpkgs/nagios-plugins-1.4.16.tar.gz
sent 4.99M bytes  received 92 bytes  3.33M bytes/sec
total size is 4.99M  speedup is 1.00

2. 서버로/에서 파일과 디렉토리 복사/동기화
로컬 서버에 있는 디렉토리를 원격 서버로 복사
$ rsync -avz rpmpkgs/ root@192.168.0.101:/home/
root@192.168.0.101's password:
sending incremental file list
./
httpd-2.2.3-82.el5.centos.i386.rpm
mod_ssl-2.2.3-82.el5.centos.i386.rpm
nagios-3.5.0.tar.gz
nagios-plugins-1.4.16.tar.gz
sent 4993369 bytes  received 91 bytes  399476.80 bytes/sec
total size is 4991313  speedup is 1.00
원격 디렉토리를 로컬 머신에 복사/동기화
# rsync -avzh root@192.168.0.100:/home/tarunika/rpmpkgs /tmp/myrpms
root@192.168.0.100's password:
receiving incremental file list
created directory /tmp/myrpms
rpmpkgs/
rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm
rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm
rpmpkgs/nagios-3.5.0.tar.gz
rpmpkgs/nagios-plugins-1.4.16.tar.gz
sent 91 bytes  received 4.99M bytes  322.16K bytes/sec
total size is 4.99M  speedup is 1.00

3. SSH를 통한 rsync
SSH를 통해 원격 서버에서 로컬 서버로 단일 파일 복사
  프로토콜을 지정하려면 -e 옵션을 사용한다. ssh를 사용할 것이므로 -e 옵션과 ssh를 함께 사용한다.
# rsync -avzhe ssh root@192.168.0.100:/root/install.log /tmp/
root@192.168.0.100's password:
receiving incremental file list
install.log
sent 30 bytes  received 8.12K bytes  1.48K bytes/sec
total size is 30.74K  speedup is 3.77
SSH를 통해 로컬 서버에서 원격 서버로 단일 파일 복사
# rsync -avzhe ssh backup.tar root@192.168.0.100:/backups/
root@192.168.0.100's password:
sending incremental file list
backup.tar
sent 14.71M bytes  received 31 bytes  1.28M bytes/sec
total size is 16.18M  speedup is 1.10

4. 진행률 표시
  --progress 옵션을 사용한다.
# rsync -avzhe ssh --progress /home/rpmpkgs root@192.168.0.100:/root/rpmpkgs
root@192.168.0.100's password:
sending incremental file list
created directory /root/rpmpkgs
rpmpkgs/
rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm
           1.02M 100%        2.72MB/s        0:00:00 (xfer#1, to-check=3/5)
rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm
          99.04K 100%  241.19kB/s        0:00:00 (xfer#2, to-check=2/5)
rpmpkgs/nagios-3.5.0.tar.gz
           1.79M 100%        1.56MB/s        0:00:01 (xfer#3, to-check=1/5)
rpmpkgs/nagios-plugins-1.4.16.tar.gz
           2.09M 100%        1.47MB/s        0:00:01 (xfer#4, to-check=0/5)
sent 4.99M bytes  received 92 bytes  475.56K bytes/sec
total size is 4.99M  speedup is 1.00

5. --include와 --exclude 옵션 사용
  전체 대상 중 추가로 포함할 것과 제외할 것을 지정한다. 아래 예는 R로 시작하는 모든 파일 및 디렉토리를 대상으로 삼는다.
# rsync -avze ssh --include 'R*' --exclude '*' root@192.168.0.101:/var/lib/rpm/ /root/rpm
root@192.168.0.101's password:
receiving incremental file list
created directory /root/rpm
./
Requirename
Requireversion
sent 67 bytes  received 167289 bytes  7438.04 bytes/sec
total size is 434176  speedup is 2.59

6. --delete 옵션 사용
  소스에 어떤 파일이나 디렉토리가 없지만 목적지에는 있는 경우 --delete 옵션을 사용하면 목적지에 있는 해당 파일을 삭제한다.
# touch test.txt
# rsync -avz --delete root@192.168.0.100:/var/lib/rpm/ .
Password:
receiving file list ... done
deleting test.txt
./
sent 26 bytes  received 390 bytes  48.94 bytes/sec
total size is 45305958  speedup is 108908.55

7. 전송할 파일의 최대 크기 설정
# rsync -avzhe ssh --max-size='200k' /var/lib/rpm/ root@192.168.0.100:/root/tmprpm
root@192.168.0.100's password:
sending incremental file list
created directory /root/tmprpm
./
Conflictname
Group
Installtid
Name
Provideversion
Pubkeys
Requireversion
Sha1header
Sigmd5
Triggername
__db.001
sent 189.79K bytes  received 224 bytes  13.10K bytes/sec
total size is 38.08M  speedup is 200.43

8. 성공적으로 전송한 후 소스 파일들 삭제
# rsync --remove-source-files -zvh backup.tar /tmp/backups/
backup.tar
sent 14.71M bytes  received 31 bytes  4.20M bytes/sec
total size is 16.18M  speedup is 1.10

9. 실제 실행 없이 테스트만 수행(dry run)
# rsync --dry-run --remove-source-files -zvh backup.tar /tmp/backups/
backup.tar
sent 35 bytes  received 15 bytes  100.00 bytes/sec
total size is 16.18M  speedup is 323584.00 (DRY RUN)

10. 대역폭 제한 설정
# rsync --bwlimit=100 -avzhe ssh  /var/lib/rpm/  root@192.168.0.100:/root/tmprpm/
root@192.168.0.100's password:
sending incremental file list
sent 324 bytes  received 12 bytes  61.09 bytes/sec
total size is 38.08M  speedup is 113347.05


2013/09/19 10:52 2013/09/19 10:52
Posted
Filed under 프로그램과 명령어/관리와 유지보수
참조 원문 : Install NVIDIA Drivers in RHEL/CentOS/Fedora and Debian/Ubuntu/Linux Mint

  이 글에서는 오픈 소스 NVIDIA 드라이버인 Nouveau가 아닌 NVIDIA의 (오픈 소스가 아닌)공식 드라이버를 설치하는 방법을 소개합니다. 이를 위해선 자동으로 동작하는 Nouveau를 먼저 중단시키는 작업이 필요합니다.

  먼저 아래의 명령어를 통해 본인의 그래픽 카드를 확인할 수 있습니다.
# lspci -nn | grep VGA
  다음으로 /etc/apt/sources.list 파일의 끝에 아래의 저장소를 추가합니다.
deb http://ftp.debian.org/debian/ wheezy main contrib non-free
  그 후 /etc/modprobe.d/blacklist.conf 파일에 아래의 줄을 추가하여 nouveau를 블랙리스트로 등록합니다.
blacklist nouveau
  이제 아래 명령어로 드라이버와 필요한 커널 패키지를 설치합니다.
# apt-get update
# apt-get install nvidia-kernel-dkms nvidia-glx nvidia-xconfig nvidia-settings
# apt-get install nvidia-vdpau-driver vdpau-va-driver
  X 서비스(gdm3)를 중단합니다.
# service gdm3 stop
  새로운 xorg.conf 파일을 생성합니다.
# X -confugure
  생성한 xorg.conf.new 파일을 /etc/X11/xorg.conf 파일로 복사합니다.
# cp /root/xorg.conf.new /etc/X11/xorg.conf
  root 계정으로 X 윈도우를 실행합니다.
# startx
2013/09/12 10:09 2013/09/12 10:09
Posted
Filed under 프로그램과 명령어/관리와 유지보수
참조 원문 : Recover deleted LVM partitions in CentOS/RHEL/Fedora

  이 글은 실수로 LVM 파티션을 삭제했을 때 vgcfgrestore 명령어로 해당 파티션을 복구하는 내용을 다루고 있습니다. 리눅스는 lvm 설정의 백업 복사본을 /etc/lvm/archive 디렉토리에 보관합니다. 이 글에서는 10GB lvm 파티션을 지운 상태에서 그것을 복구하는 과정을 소개합니다.

1. 볼륨 그룹(예: my-vg)의 백업본 설정을 찾는다.
# vgcfgrestore --list   < 볼륨그룹명 >
# vgcfgrestore --list my-vg

출처: 참조 원문 사이트

  위의 출력 결과에서 동그라미 안에 있는 것이 복구 대상인 것으로 가정합니다.


2. vgcfgrestore와 아카이브 파일을 사용하여 LVM 파티션을 복구한다.
# vgcfgrestore -f /etc/lvm/archive/<파일명> <볼륨그룹명>
예:
# vgcfgrestore -f /etc/lvm/archive/my-vg_00002-692643462.vg  my-vg
"Restored volume group my-vg"
  이제 lvm 파티션을 마운트하여 데이터가 무사한지 확인할 수 있습니다.
2013/08/18 15:55 2013/08/18 15:55
Posted
Filed under 프로그램과 명령어/관리와 유지보수
참조 원문 : 20 Linux Tips Worth Trying

  GRUB에 이상이 발생한 경우 복구하는 방법을 소개합니다. 먼저 GRUB 2를 지원하는 라이브CD/DVD(우분투 9.10 이상)로 부팅 후 터미널을 열어 fdisk -l 명령어로 복구할 GRUB 2의 설정 파일이 있는 파티션(과 루트 파일시스템의 파티션)을 확인합니다. 디폴트의 경우 첫 번째 파티션이 /boot 파일시스템, 두 번째 파티션이 루트 파일시스템을 담고 있으므로 여기서는 각각 /dev/sda1과 /dev/sda2로 가정하고 설명하겠습니다. 아래의 절차에 따라 복구를 진행합니다.
$ sudo mkdir /media/sda
$ sudo mkdir /media/sda/boot
$ sudo mount /dev/sda2 /media/sda/
$ sudo mount /dev/sda1 /media/sda/boot
$ sudo mount --bind /dev /media/sda/dev
$ sudo mount --bind /proc /media/sda/proc
  루트 파일시스템을 마운트한 위치에 chroot를 걸어줍니다.
$ sudo chroot /media/sda
  GRUB을 재설치합니다.
# grub-install /dev/sda
Installation finished. No error reported.
  에러가 발생한다면 아래의 명령어를 실행합니다.
# grub-install --recheck /dev/sda
  설치 후 chroot를 종료하고 GRUB을 복구하기 위해 걸었던 마운트를 해제한 뒤에 리붓을 합니다.
# exit
$ sudo umount /media/sda/proc
$ sudo umount /media/sda/dev
$ sudo umount /media/sda/boot
$ sudo umount /media/sda
$ sudo reboot
  이런 번거러운 작업을 해야 하는 이유는 설치할 GRUB의 설정 파일이 필요하기 때문입니다.

2013/08/14 14:23 2013/08/14 14:23
Posted
Filed under 프로그램과 명령어/관리와 유지보수
참조 원문 : How to create a secure incremental offsite backup in Linux with Duplicity

  재해 복구를 위해 원격 지역에 백업을 하는 경우 보통은 공인망을 통해 데이터가 오가기 때문에 암호화를 염두해야 합니다. 또한 백업으로 인해 소모되는 대역폭, 디스크 스토리지, 시간을 아끼기 위해 풀 백업이 아닌 증강 백업의 지원여부도 중요합니다.

  Duplicity는 암호화가 가능한 증강 백업 툴로서 librsync를 사용하여 대역폭/공간에 있어 효율적인 증강 아카이브를 생성합니다. 또한 GnuPG를 사용해 백업 아카이브를 암호화와/나 사인을 할 수 있어 인증받지 않은 데이터 접근과 조작을 방지합니다.

  이 글에서는 Duplicity로 원격 지점에 보안이 적용된 증강 백업을 하는 방법을 설명합니다.

Duplicity 설치
  데비안 계열에 설치하는 방법은 아래와 같습니다.
$ sudo apt-get install duplicity python-paramiko
  레드햇 계열에 설치하는 방법은 아래와 같습니다. 단, CentOS나 RHEL은 먼저 EPEL 저장소를 사용해야 합니다.
$ sudo yum install duplicity python-paramiko

SCP를 통한 보안성 있는 원격 증강 백업
  로컬 디렉토리(예: ~/Downloads)의 증강 백업본을 만들어 SCP를 이용해 원격 SSH 서버에 전송하려면 아래의 명령어를 사용합니다. 참고로 그 전에 원격 SSH 서버에 대해 패스워드 없이 SSH 로그인을 할 수 있도록 설정해야 합니다.
$ duplicity ~/Downloads scp://user@remote_site.com//home/user/backup/
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
GnuPG passphrase:
Retype passphrase to confirm:
No signatures found, switching to full backup.
--------------[ Backup Statistics ]--------------
StartTime 1375918500.17 (Wed Aug  7 19:35:00 2013)
EndTime 1375918539.07 (Wed Aug  7 19:35:39 2013)
ElapsedTime 38.90 (38.90 seconds)
SourceFiles 3
SourceFileSize 65982804 (62.9 MB)
NewFiles 3
NewFileSize 65982804 (62.9 MB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 3
RawDeltaSize 65978708 (62.9 MB)
TotalDestinationSizeChange 66132356 (63.1 MB)
Errors 0
-------------------------------------------------
  처음 원격 백업을 실시하면 풀 백업을 하게 되며, 암호화를 위한 초기 GnuPG 패스프레이즈를 설정하게 됩니다. 그 다음부터는 증강 백업을 하게 되며, 처음에 설정한 GnuPG 패스프레이즈를 매번 입력해야 합니다.

비대화 모드를 통한 보안성 있는 원격 증강 백업
  패스프레이즈를 입력하는 것이 싫다면 아래처럼 Duplicity를 실행하기 전에 PASSPHRASE 환경변수를 설정할 수 있습니다.
$ PASSPHRASE=mypass duplicity ~/Downloads scp://user@remote_site.com//home/user/backup/
  커맨드라인에 평문 패스프레이즈를 넣기 싫다면 아래의 백업 스크립트를 사용하는 방법도 있습니다. 당연히 본인만 읽을 수 있도록 퍼미션을 설정해야 합니다.
export PASSPHRASE=yourpass
duplicity ~/Downloads scp://user@remote_site.com//home/user/backup/
unset PASSPHRASE

암호화 없이 원격 증강 백업
  암호화할 필요가 없다면 암호화를 비활성화할 수도 있습니다.
$ duplicity --no-encryption ~/Downloads scp://user@remote_site.com//home/user/backup/

원격 백업의 무결성 확인
  중요한 데이터의 경우 원격 백업이 성공적으로 됐는지 확인할 필요가 있습니다. 로컬과 원격 볼륨이 동일한지 확인하려면 아래의 명령어를 사용합니다.
$ duplicity verify scp://user@remote_site.com//home/user/backup/ ~/Downloads
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Wed Aug  7 19:34:52 2013
Verify complete: 8 files compared, 0 differences found.
  참고로 "verify" 옵션을 사용할 때는 로컬과 원격 디렉토리의 순서를 반대로 적어야 합니다. 즉, 원격 디렉토리를 먼저 적어야 합니다.

원격 백업을 사용하여 복구
  원격 백업본을 사용해 로컬에 적용하려면 아래와 같은 명령어를 실행합니다.
$ duplicity scp://user@remote_site.com//home/user/backup/ ~/Downloads_restored
  원격 백업을 사용하여 복구하려면 지정한 복구 대상 디렉토리(예: Downloads_restored)가 로컬에 존재하지 않아야 합니다.

FTP를 통한 보안성 있는 원격 증강 백업
  SCP와 더불어 FTP를 포함한 몇 가지 다른 프로토콜을 사용하는 것도 가능합니다. FTP를 사용하려면 아래와 같은 형식을 이용합니다.
$ duplicity ~/Downloads ftp://username@ftp_server.com/backup_directory
  비대화형으로 실행하려면 FTP_PASSWORD 환경변수에 FTP 패스워드를 설정합니다.
$ FTP_PASSWORD=mypass duplicity ~Downloads ftp://username@ftp_server.com/backup_directory

트러블슈팅 팁
  아래와 같은 에러가 발생한다면 python용 SSH2 프로토콜 라이브러리를 설치하지 않은 것입니다.
BackendException: Could not initialize backend: No module named paramiko
  문제를 해결하기 위해 데비안 계열의 경우 아래 명령어를 실행합니다.
$ sudo apt-get install python-paramiko
  레드햇 계열의 경우 아래 명령어를 실행합니다.
$ sudo yum install python-paramiko

  아래와 같은 에러가 발생한다면 원격 SSH 서버에 대해 패스워드 없이 SSH 로그인을 할 수 있도록 설정하지 않은 것입니다.
BackendException: ssh connection to xxx@xxxx failed: No authentication methods available
2013/08/12 15:39 2013/08/12 15:39
Posted
Filed under 프로그램과 명령어/관리와 유지보수
참조 원문 : How to back up hard drives for disaster recovery with Clonezilla

  Clonezilla는 GPL 라이선스의 디스크 복제 및 백업 소프트웨어입니다. 디스크/파티션을 다른 로컬 디바이스로 복제하거나 복제 이미지를 외부 SSH/Samba/NFS 서버로 보낼 수 있습니다. 또한 DRBL(Diskless Remote Boot in Linux)에서 실행하여 거대 규모의 네트워크로 묶인 컴퓨터들을 동시에 복제할 수 있습니다.

  이 글에서는 엔드 유저 환경에서 하드 드라이브를 복제/백업하고 복구하는 방법을 설명합니다.

  Clonezilla는 Clonezilla live의 ISO 이미지를 통해 사용할 수 있으며 데비안 기반 ISO 이미지와 우분투 기반 ISO 이미지가 있습니다. 후자는 좀 더 최신 커널을 사용하며 비자유(non-free) 컴포넌트도 사용합니다. Clonezilla로 하드 드라이브를 백업하려면 Clonezilla ISO 이미지로 라이브 CD/USB를 만들어야 합니다.

Clonezilla로 하드 드라이브 백업하기
  전체 하드 드라이브를 백업할 컴퓨터에 Clonezilla 라이브 CD/USB를 넣고 부팅하여 BIOS에서 부팅 우선 순위를 조절 후 부팅하여 초기 화면에 진입합니다. 거기서 Clonezilla live 옵션을 선택합니다.

출처 : http://xmodulo.com/2013/08/how-to-back-up-hard-drives-for-disaster-recovery-with-clonezilla.html

  그러면 이제부터 부팅 옵션을 정하기 위한 선택화면으로 들어가게 됩니다. 먼저 Clonezilla를 시작할 것인지, 아니면 로그인 쉘로 빠질 것인지 선택하는 화면이 나오는데 여기서 Clonezilla를 선택합니다. 물론 쉘로 빠지는 걸 선택하면 fsck 실행, 루트 패스워드 재설정 등 여러 긴급 작업을 할 수 있겠죠.

http://xmodulo.com/2013/08/how-to-back-up-hard-drives-for-disaster-recovery-with-clonezilla.html

  다음으로 "device-image" 모드와 "device-device" 모드 중 하나를 선택합니다. 전자는 디스크/파티션 이미지를 생성하고, 후자는 디스크를 직접 다른 디스크에 복제합니다. 지금은 "device-image" 모드를 선택했다고 가정하고 설명합니다.

  다음으로 이미지가 저장될 곳을 선택합니다. 지금은 "ssh_server"를 선택했다고 가정하겠습니다.

  그 다음에는 네트워크 인터페이스를 설정하는 화면이 나옵니다. IP와 기본 네트워크 정보를 입력한 후 SSH 서버에 접속할 때 사용할 계정명을 적습니다. 이때 이미지 파일을 저장할 SSH 서버의 절대 경로도 지정합니다. Clonezilla는 입력한 SSH 서버 정보를 기반으로 sshfs를 사용하여 원격 SSH 서버의 대상 디렉토리를 로컬에 마운트하는데 이 과정은 직접 화면으로 볼 수 있습니다. 확인이 끝나면 엔터를 눌러 계속 진행합니다.

  이제 복제 모드를 선택하는 화면이 나옵니다. "Beginner"와 "Expert"가 있는데 지금은 "Beginner"를 기준으로 설명합니다.

  다음 화면에서는 디스크 전체를 백업할 것인가, 아니면 디스크의 특정 파티션만 백업할 것인가를 선택합니다. 지금은 디스크 전체를 백업하기 위해 savedisk 옵션을 선택했다고 가정하겠습니다.

  그 다음에는 생성할 이미지 파일의 이름을 설정합니다. 그 후 스페이스 키로 백업할 디스크를 고릅니다.

  다음으로 이미지를 생성하기 전에 원본 파일 시스템에 대한 검사 및 교정을 실시할지를 정합니다. 검사 및 교정을 하려면 해당 파일 시스템이 fsck 명령어로 검사할 수 있는 파일 시스템이어야 합니다.

  다음으로 생성한 이미지에 대한 검사 여부를 정합니다.

  이제 모든 선택이 끝났으며 선택한 디스크 드라이브의 압축된 이미지 파일을 생성하여 원격 SSH 서버에 전송하게 됩니다.

http://xmodulo.com/2013/08/how-to-back-up-hard-drives-for-disaster-recovery-with-clonezilla.html

  이미지가 성공적으로 생성되고 확인까지 끝나면 아래와 같은 화면을 볼 수 있습니다.

http://xmodulo.com/2013/08/how-to-back-up-hard-drives-for-disaster-recovery-with-clonezilla.html

  엔터를 눌러 계속 진행합니다. 그러면 아래와 같은 화면을 통해 컴퓨터 종료, 리붓, 다른 디스크 드라이브/파티션을 대상으로 같은 백업 절차 진행 등을 할 수 있습니다.

http://xmodulo.com/2013/08/how-to-back-up-hard-drives-for-disaster-recovery-with-clonezilla.html


Clonezilla로 하드 드라이브 복구하기
  방법은 매우 쉽습니다. Clonezilla CD/USB로 부팅 후 아래 화면이 나올 때까지 위와 동일하게 진행합니다.

http://xmodulo.com/2013/08/how-to-back-up-hard-drives-for-disaster-recovery-with-clonezilla.html

  위 화면에서 "restoredisk"를 선택하면 복구에 사용할 이미지를 선택하는 화면이 나오며, 그 다음에는 대상 로컬 디스크를 선택하는 화면이 나옵니다. 선택이 끝나면 복구가 진행됩니다.

2013/08/09 09:25 2013/08/09 09:25