다음 도서를 참고하여 작성하였습니다.
http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791160509366
리눅스 환경에서 백업을 해야하는 경우
다음 이미지와 같이 리눅스 환경에서 아카이브 이미지를 생성하여 원격 저장소에 스트리밍하는 방법을 다뤄보겠습니다.
파일 준비
원격 저장소에 저장할 파일을 간단하게 생성합니다.
mkdir tmp
cd tmp
touch file1
touch file2
touch file3
...
트리형식으로 나타내면 다음과 같습니다.
tmp/
├── file1
├── file2
├── file3
└── file4
아카이브 생성 및 원격 스트리밍 전송
명령어 부터 살펴보면 다음과 같습니다. 여기서 ssh로 전송할 목적지의 계정은 ubuntu, ip는 10.0.3.179 입니다.
tar czvf - tmp | ssh ubuntu@10.0.3.179 \
"cat > /home/ubuntu/myfiles.tar.gz"
실행결과
파일명들이 출력되며, 원격 저장소의 비밀번호를 입력하면 원격 저장소에 myfiles.tar.gz 파일이 생성됩니다.
원격 저장소를 확인해보겠습니다.
위 파일의 압출을 풀면 위에서 생성한 파일들이 그대로 저장된 것을 확인할 수 있습니다.
# tar -xzvf myfiles.tar.gz
# ls tmp
file1 file2 file3 file4
어떻게 동작이 이루어졌는지 실행한 명령어를 하나하나 살펴보겠습니다.
tar czvf - tmp | ssh ubuntu@10.0.3.179 \
"cat > /home/ubuntu/myfiles.tar.gz"
tar 명령 인자 뒤에 아카이브 이름 대신 대시(-)를 사용하여 내용을 표준 출력 장치(화면)에 출력하였습니다.
아카이브에 추가할 파일명(디렉토리명, 여기서는 tmp)를 tar 명령어 끝에 지정합니다
그 다음 이름이 지정되지 않은 압축된 아카이브를 원격 서버에 로그인하는 ssh 명령과 파이프로 연결합니다.
이 후 큰따옴표 안의 명령어가 실행되는데, cat 명령어는 파이프로 전달받은 데이터 스트림을 원격 서버의 홈 디렉토리에 myfiles.tar.gz 라는 파일로 저장합니다.
이러한 방법으로 아카이브를 생성하면 중간 단계에서 임시 파일을 로컬 컴퓨터에 생성할 필요가 없다는 장점이 있습니다.
만약 120GB가 남아있는 디스크에 110GB에 달하는 설치파일을 백업해야하는 경우 아카이브 파일을 저장하기 힘들것입니다.
전송하고자 하는 파일을 살펴보면 다음과 같습니다.
tmp/
├── file1
├── file2
├── file3
└── file4
만약 tmp 폴더에서 file1과 file2만 전송하고 싶은 경우는 어떻게 할까요?
tar 명령어의 --exclude 명령어를 이용하여 원하지 않는 파일이나 디렉토리를 제외합니다.
tar czvf - tmp \
--exclude=tmp/file3 --exclude=tmp/file4 | ssh ubuntu@10.0.3.179 \
"cat > /home/ubuntu/myfiles.tar.gz"
원격 저장소에서 압축을 해제하면 file1과 file2만 있는 것을 확인할 수 있습니다.
Ubuntu 환경에서 tar 명령어를 이용하여 아카이브를 생성하고 원격 저장소로 스트리밍하는 방법에 대하여 알아봤습니다.
'About > Linux' 카테고리의 다른 글
[Linux] LVM(Logical Volume Manager) 구성하기(CentOS 7) (0) | 2022.05.26 |
---|---|
[Linux] rsync로 아카이브 동기화(Linux 백업 동기화) (2) | 2021.07.19 |
[Linux] find 명령어로 파일 모으기(특정 파일만 압축하기) (0) | 2021.06.05 |
[Linux] Ubuntu에서 OpenSSH(openssh-client, openssh-server) 사용 (0) | 2021.05.13 |
[Linux] Ubuntu에서 LXC 컨테이너 사용하기 (0) | 2021.05.12 |