Categories
Linux

tar 명령: 여러 파일 및 디렉토리를 1개의 파일에 보관하기

tar 명령은 여러 파일이나 디렉토리를 한 파일 안에 보관할 때 사용한다. 이때 1개의 보관 파일을 tar 파일 또는 아카이브 (archive) 파일이라 부른다.

1. tar 파일 생성

여러 개의 파일을 1개의 파일로 묶어 보자.

tar -cvf backup.tar a.txt b.txt c.txt

-c 옵션은 tar 파일을 생성하도록 한다. -v 옵션은 화면에 자세한 정보를 출력하도록 한다. -f 옵션은 tar 파일의 이름을 지정할 때 사용한다.

디렉토리와 그 안의 파일들을 1개의 파일로 묶어 보자.

tar -cvf backup.tar dir1/

위 명령은 dir1 디렉토리와 그 안의 파일들을 backup.tar 파일 안에 보관한다.

디렉토리와 파일들을 섞어서 인자로 지정할 수도 있다.

tar -cvf backup.tar dir/ a.txt b.txt c.txt

2. tar 파일 풀기

tar 파일에 보관된 파일과 디렉토리를 추출해 보자. -x 옵션을 사용한다.

tar -xvf backup.tar

위 명령은 추출한 파일과 디렉토리를 현재 작업 디렉토리에 둔다.

추출한 내용을 특정한 디렉토리에 두려면 -C 옵션을 쓴다.

tar -xvf backup.tar -C /home/user1/tmp

3. tar 파일의 내용 확인하기

tar 파일을 풀지 않고 내용을 확인할 때는 -t 옵션을 쓴다.

tar -tvf backup.tar

위 명령을 내리면 backup.tar 안에 보관된 파일과 디렉토리의 리스트가 출력된다.

4. 특정한 파일을 지정하여 추출하기

tar 파일에 보관된 내용 전부를 추출하지 않고 일부만 추출할 수도 있다.

tar -xvf backup.tar dir1/d.txt

위 명령은 보관된 내용 중에서 dir1 디렉토리 안의 d.txt 파일만 추출한다.

5. 압축된 tar 파일 생성

디스크 공간 절약을 위해 tar 파일을 압축할 필요가 있다. -z 옵션을 사용하면 gzip 명령을 통한 압축이 수행된다.

tar -zcvf backup.tar.gz *

위 명령은 현재 작업 디렉토리의 모든 내용을 backup.tar 로 묶은 후에 gzip 으로 압축한다. 최종 결과는 backup.tar.gz 파일이다.

6. 압축된 tar 파일 풀기

압축된 tar 파일을 생성할 때와 마찬가지로 -z 옵션을 사용한다.

tar -zxvf backup.tar.gz

위 명령은 압축을 해제한 후에 보관 내용을 추출하여 현재 작업 디렉토리에 둔다.

Categories
Linux

우분투 리눅스에서 zip 명령과 unzip 명령 사용하기

1. 패키지 설치

zip 패키지와 unzip 패키지를 설치한다.

apt install zip unzip

2. zip: 파일 압축

파일을 zip 형식으로 압축해 보자.

zip backup.zip a.txt b.txt c.txt

위 명령은 3개의 텍스트 파일을 압축하여 backup.zip 파일에 저장한다. 원본 파일은 삭제되지 않고 보존된다.

디렉토리와 그 안의 파일까지 압축하려면 -r 옵션을 사용한다.

zip -r backup.zip dir1

위 명령은 dir1 이라는 디렉토리와 그 안의 파일들을 압축하여 backup.zip 파일에 저장한다.

디렉토리와 파일을 함께 압축할 수도 있다.

zip -r backup.zip dir1 a.txt b.txt c.txt

3. unzip: 압축 해제

압축을 해제할 때는 unzip 명령을 사용한다.

unzip backup.zip

위 명령은 현재 디렉토리에 압축을 푼다.

어느 디렉토리에 압축을 풀 것인지 지정할 수도 있다.

unzip backup.zip -d /tmp/backup

위 명령에는 -d 옵션이 사용되었다. /tmp/backup 디렉토리에 압축이 풀린다. 압축을 풀 디렉토리는 미리 만들어져 있어야 한다.

Categories
iPXE

iPXE: QEMU에서 설치 디스크 없이 PXE 부팅으로 우분투 설치하기

QEMU 디스크 이미지를 생성한다.

qemu-img create -f qcow2 ubuntu.img 32G

QEMU 가상 머신을 시작한다.

qemu-system-x86_64 -m 8G -hda ubuntu.img

PXE 부팅 단계에서 아래와 같은 메시지가 보일 것이다.

Press Ctrl-B for the iPXE command line…

이때 Ctrl-B 키를 누르면 PXE 부팅이 중단되고 iPXE 쉘 상태가 된다. 아래와 같은 명령 프롬프트가 나타난다.

iPXE>

QEMU 는 자체적으로 DHCP 서버를 제공한다. 이 서버로부터 IP 주소를 할당받는다. dhcp 명령을 사용한다.

iPXE> dhcp

PXE 부팅을 위해서 인스톨러 (installer) 커널과 이니셜 (initial) 램디스크가 필요하다.

인스톨러 커널을 다운로드한다.

iPXE> kernel http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/ubuntu-installer/amd64/linux

이니셜 램디스크를 다운로드한다.

iPXE> initrd http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/ubuntu-installer/amd64/initrd.gz

다운로드한 인스톨러 커널로 부팅한다.

iPXE> boot

부팅에 성공하면 우분투 설치 초기 화면이 나타난다. 여기서부터 설치를 진행하면 된다. 설치 과정은 우분투 설치용 ISO 파일을 사용할 때와 같다.

Categories
SSH

PuTTY: SSH 키 인증 방식으로 암호 입력 없이 로그인하기

1. SSH 키 페어 생성하기

윈도우에서 PuTTY 를 실행한다.

‘PuTTY Configuration’ 창 아래쪽에 있는 Keygen 버튼을 클릭한다.

PuTTY Key Generator 창이 뜬다.

‘Type of key to generate:’ 에서 ‘SSH-2 RSA’ 를 선택한다.

Generate 버튼을 클릭한다. 프로그레스 바 (progress bar) 밑의 빈 영역에서 마우스를 움직이면 키 생성 속도가 빨라진다.

SSH 키 페어 (pair) 는 퍼블릭 키와 프라이빗 (private) 키로 구성된다. 키가 생성되면 퍼블릭 키는 창에 표시된다. 프라이빗 키는 표시되지 않는다.

‘Save public key’ 버튼을 눌러서 퍼블릭 키를 저장한다. 파일 이름은 임의로 정한다. 예를 들어 rsa-key-20221012.txt 와 같이 이름붙이면 된다.

‘Save private key’ 버튼을 눌러서 프라이빗 (private) 키를 저장한다. 파일 이름은 임의로 정하면 된다. 확장자는 ppk 이다.

‘PuTTY Key Generator’ 창을 닫는다.

2. 프라이빗 키 불러오기

‘PuTTY Configuration’ 창 아래쪽에 있는 Agent 버튼을 클릭한다.

‘Pageant Key List’ 창 아래쪽에 있는 ‘Add Key’ 버튼을 클릭한다. 앞에서 저장해 둔 프라이빗 키 파일을 찾아 선택한다.

‘Pageant Key List’ 창을 닫고 PuTTY 를 종료한다.

3. SSH 서버에 퍼블릭 키 등록하기

SSH 서버가 동작하는 컴퓨터에서 ~/.ssh 디렉토리를 생성한다.

mkdir ~/.ssh

디렉토리의 퍼미션을 아래와 같이 변경한다.

chmod 700 ~/.ssh

이 디렉토리 안에 authorized_keys 라는 파일을 생성한다.

vi ~/.ssh/authorized_keys

클라이언트 컴퓨터에서 PuTTY 를 실행한다.

‘PuTTY Configuration’ 창 아래쪽에 있는 Agent 버튼을 클릭한다.

‘Pageant Key List’ 창 아래쪽에 있는 ‘Copy OpenSSH public keys’ 버튼을 클릭한다. 그러면 퍼블릭 키의 내용이 윈도우의 클립보드에 복사된다.

복사한 내용을 ~/.ssh/authorized_keys 파일에 붙여넣는다. 키의 내용이 1줄로 이루어졌는지 확인한다.

다음은 퍼블릭 키의 예이다.

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAroIMQaJALdkNzNEbCNGXQ14Dv4fXDFo6DEPWK7xUHR2FOLzPkDnSvNyjWYGu5w6RQdoWK6Od6DSmk95mSoF3wf3c1ps9XrMetix7mnkCHZl2V2QZIYAIVpohV45aLrvboILejN7UgNHnGTY+D5tymcalCnebl0mWWvFuOzuaeok+KlLko40QfJAmFuE/O6Jhn56c39Th+anSSw//2h52S3w212ES4mCnohAfqQpBCo6/pXqyTvgXZorX6Y4hCOC+Zcj/tTxVhUhcqlDELASSPWlzfhSRkm1OVqcOWba9r23Cr8TUrsnf5V2dj3IYE7nE32efJXU3mu99xZytM6g7NQ== rsa-key-20221013

~/.ssh/authorized_keys 파일을 저장하고 편집기를 닫는다.

4. 테스트

클라이언트 컴퓨터에서 PuTTY 를 통해 SSH 서버에 접속해 본다. 암호를 입력하는 과정을 거치지 않고 로그인되면 성공이다.