전자책 출간 알림 [마이크로서비스패턴 쉽게 개발하기]

티스토리 뷰

tar로 압축/해제하기

tar -cf : 압축하기

tar -tf: 테스트 하기

tar -xf: 압축 해제하기

[root@bastion tmp]# ls -al
total 36
drwxr-xr-x.  3 root root  4096 Jun  9 17:15 .
dr-xr-x---. 15 root root  4096 Jun  8 16:07 ..
-rwxr-xr-x.  1 root root    80 Jun  4 15:14 control
-rw-r--r--.  1 root root 16426 Jun  8 20:04 control_outfile
drwxr-xr-x.  2 root root  4096 Jun  9 17:16 test
[root@bastion tmp]# tar -cf test/tmp.tar control*
[root@bastion tmp]# tar -tf test/tmp.tar
control
control_outfile

[root@bastion tmp]# cd test
[root@bastion test]# tar -xf tmp.tar
[root@bastion test]# ls -l
total 44
-rwxr-xr-x. 1 root root    80 Jun  4 15:14 control
-rw-r--r--. 1 root root 16426 Jun  8 20:04 control_outfile
-rw-r--r--. 1 root root 20480 Jun  9 17:17 tmp.tar

 

압축방식별 tar파일 크기 비교

기본압축, gzip, bzip, xzip 등 압축방식을 지정하여 압축할 수 있습니다.

아래와 같이 xzip이 가장 우수한 압축률을 제공합니다. 

추가로 bzip도 있습니다.

[root@infra ~]# mkdir -p ~/backup
[root@infra ~]# cd ~/backup
[root@infra backup]# tar -cf backup-etc-$(date +%F).tar /etc
tar: Removing leading `/' from member names
[root@infra backup]# tar -czf backup-etc-$(date +%F).tar.gz /etc
tar: Removing leading `/' from member names
[root@infra backup]# tar -cJf backup-etc-$(date +%F).tar.xz /etc
tar: Removing leading `/' from member names
[root@infra backup]# ls -lh
total 52M
-rw-r--r--. 1 root root  33M Jun  9 17:28 backup-etc-2020-06-09.tar
-rw-r--r--. 1 root root  11M Jun  9 17:28 backup-etc-2020-06-09.tar.gz
-rw-r--r--. 1 root root 7.8M Jun  9 17:28 backup-etc-2020-06-09.tar.xz
[root@infra backup]#

[root@infra backup]# file *.tar
backup-etc-2020-06-09.tar: POSIX tar archive (GNU)
[root@infra backup]# file *.tar.gz
backup-etc-2020-06-09.tar.gz: gzip compressed data, from Unix, last modified: Tue Jun  9 17:28:34 2020
[root@infra backup]# file *.tar.xz
backup-etc-2020-06-09.tar.xz: XZ compressed data

❯ tar -cjf backup-etc-$(date +%F).tar.bz /etc
tar: Removing leading '/' from member names

~/backup
❯ ls -lh
total 8
-rw-r--r--  1 happycloudpak  staff   266B Jun  9 17:35 backup-etc-2020-06-09.tar.bz

압축방식은 달라도 해제할 때는 'tar -xf <압축파일명>'을 사용하면 됩니다. 

 

파일 전송하기: scp

scp명령을 이용하여 다른 서버(vm)에 있는 파일들을 안전하게 복사할 수 있습니다.

[root@bastion scptest]# ssh infra
Last login: Tue Jun  9 17:35:22 2020 from api-int.cp.kubepia.net
[root@infra ~]# ls -l backup
total 52228
-rw-r--r--. 1 root root 33976320 Jun  9 17:28 backup-etc-2020-06-09.tar
-rw-r--r--. 1 root root 11416399 Jun  9 17:28 backup-etc-2020-06-09.tar.gz
-rw-r--r--. 1 root root  8085316 Jun  9 17:28 backup-etc-2020-06-09.tar.xz
[root@infra ~]# exit
logout
Connection to 10.178.41.165 closed.
[root@bastion scptest]# scp -r root@infra:~/backup .
backup-etc-2020-06-09.tar                                                                                    100%   32MB  69.7MB/s   00:00
backup-etc-2020-06-09.tar.gz                                                                                 100%   11MB 135.7MB/s   00:00
backup-etc-2020-06-09.tar.xz                                                                                 100% 7896KB 107.0MB/s   00:00
[root@bastion scptest]# ls -l
total 4
drwxr-xr-x. 2 root root 4096 Jun  9 17:42 backup
[root@bastion scptest]# ls -lh backup
total 52M
-rw-r--r--. 1 root root  33M Jun  9 17:42 backup-etc-2020-06-09.tar
-rw-r--r--. 1 root root  11M Jun  9 17:42 backup-etc-2020-06-09.tar.gz
-rw-r--r--. 1 root root 7.8M Jun  9 17:42 backup-etc-2020-06-09.tar.xz
[root@bastion scptest]#

 

파일을 복사할 때는 -r 옵션을 주지 않으면 됩니다.

[root@bastion scptest]# scp root@infra:~/backup/* .
backup-etc-2020-06-09.tar                                                                                    100%   32MB 120.4MB/s   00:00
backup-etc-2020-06-09.tar.gz                                                                                 100%   11MB 100.8MB/s   00:00
backup-etc-2020-06-09.tar.xz                                                                                 100% 7896KB  66.2MB/s   00:00
[root@bastion scptest]# ls -l
total 52300
drwxr-xr-x. 2 root root     4096 Jun  9 17:42 backup
-rw-r--r--. 1 root root 33976320 Jun  9 17:44 backup-etc-2020-06-09.tar
-rw-r--r--. 1 root root 11416399 Jun  9 17:44 backup-etc-2020-06-09.tar.gz
-rw-r--r--. 1 root root  8085316 Jun  9 17:44 backup-etc-2020-06-09.tar.xz

 

파일 전송하기: sftp

sftp로 다른 서버(vm)을 접속한 후 get으로 파일을 가져오고, put으로 파일을 밀어넣을 수 있습니다.

lcd는 local change directory의 약자로 소스 서버(vm)의 현재 위치를 바꾸는 명령입니다. 

[root@bastion ~]# sftp root@infra
Connected to infra.
sftp> lcd ~/tmp/scptest
sftp> cd backup
sftp> ls -l
-rw-r--r--    1 root     root     33976320 Jun  9 17:28 backup-etc-2020-06-09.tar
-rw-r--r--    1 root     root     11416399 Jun  9 17:28 backup-etc-2020-06-09.tar.gz
-rw-r--r--    1 root     root      8085316 Jun  9 17:28 backup-etc-2020-06-09.tar.xz
sftp> get *
Fetching /root/backup/backup-etc-2020-06-09.tar to backup-etc-2020-06-09.tar
/root/backup/backup-etc-2020-06-09.tar                                                                       100%   32MB 103.6MB/s   00:00
Fetching /root/backup/backup-etc-2020-06-09.tar.gz to backup-etc-2020-06-09.tar.gz
/root/backup/backup-etc-2020-06-09.tar.gz                                                                    100%   11MB 116.8MB/s   00:00
Fetching /root/backup/backup-etc-2020-06-09.tar.xz to backup-etc-2020-06-09.tar.xz
/root/backup/backup-etc-2020-06-09.tar.xz                                                                    100% 7896KB 120.9MB/s   00:00
sftp> lcd /etc
sftp> put hosts
Uploading hosts to /root/backup/hosts
hosts                                                                                                        100%  962     1.3MB/s   00:00
sftp> ls -l
-rw-r--r--    1 root     root     33976320 Jun  9 17:28 backup-etc-2020-06-09.tar
-rw-r--r--    1 root     root     11416399 Jun  9 17:28 backup-etc-2020-06-09.tar.gz
-rw-r--r--    1 root     root      8085316 Jun  9 17:28 backup-etc-2020-06-09.tar.xz
-rw-r--r--    1 root     root          962 Jun  9 17:54 hosts

sftp> exit

 

파일 동기화 하기: rsync

rsync명령을 이용하여 서버(vm)간에 파일 자체 또는 파일 내용까지 동기화할 수 있습니다. 

따라서 서버간 파일 복사도 할 수 있습니다.

[root@bastion ~]# rsync -Par root@infra:~/rsynctest .
receiving incremental file list
rsynctest/
rsynctest/file2
              0 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/3)
[root@bastion ~]# ls -l rsynctest/
total 0
-rw-r--r--. 1 root root 0 Jun 10 15:00 file1
-rw-r--r--. 1 root root 0 Jun 10 15:06 file2
[root@bastion ~]# rsync -Par root@infra:~/rsynctest .
receiving incremental file list
rsynctest/file1
             12 100%   11.72kB/s    0:00:00 (xfr#1, to-chk=1/3)
[root@bastion ~]# ls -l rsynctest/
total 4
-rw-r--r--. 1 root root 12 Jun 10 15:06 file1
-rw-r--r--. 1 root root  0 Jun 10 15:06 file2
[root@bastion ~]# cat rsynctest/file1
hello file1

반대 방향으로도 할 수 있습니다.

$ rsync -Par ~/rsynctest server-b:~/rsynctest

 

댓글

전자책 출간 알림 [마이크로서비스패턴 쉽게 개발하기]