본문 바로가기

리눅스

SSH를 통한 파일 압축 및 복사하는 방법

반응형

SSH를 통해 파일을 압축하여 복사하는 방법

tar와 scp, ssh를 조합하면 원격 서버와 로컬 간에 파일을 압축하면서 전송할 수 있습니다. 이 방법은 전송 속도를 높이고 네트워크 자원을 절약하는 데 유용합니다.

1. 원격 서버의 파일 압축하여 로컬로 복사하기

원격 서버의 파일을 압축하면서 로컬로 복사하기

ssh user@remote_host "tar czf - /path/to/remote/file_or_dir" > local_file.tar.gz
  • user@remote_host : 원격 서버 접속 정보
  • /path/to/remote/file_or_dir : 원격 서버에서 압축할 파일 또는 디렉토리
  • local_file.tar.gz : 로컬에 저장될 압축 파일 이름

압축 해제(로컬에서)

tar xzf local_file.tar.gz

2. 로컬 파일을 압축해서 원격 서버로 복사하기

1단계: 로컬에서 파일 압축

tar czf local_file.tar.gz /path/to/local/file_or_dir

2단계: 압축 파일을 SCP로 전송

scp local_file.tar.gz user@remote_host:/path/to/remote/directory

3단계: 원격 서버에서 압축 해제

ssh user@remote_host "tar xzf /path/to/remote/directory/local_file.tar.gz -C /path/to/remote/directory"
728x90

3. 실시간 압축 + 전송 + 해제(One-liner 방식)

tar czf - ./tmp | ssh sangchul@222.222.222.222 "tar xzf - -C /home/sangchul/"

또는 디렉토리를 변경한 상태에서 바로 압축 해제

tar czf - ./tmp | ssh sangchul@222.222.222.222 "(cd /home/sangchul/ && tar xzf -)"

사용 예시

출발지(Source) 서버

$ pwd
/home/sangchul
$ tar czf - tmp | ssh sangchul@222.222.222.222 "tar xzf - -C /home/sangchul/"
sangchul@222.222.222.222's password:

목적지(Destination) 서버

$ pwd
/home/sangchul
$ ls -l
drwxr-xr-x 3 sangchul sangchul 83 Aug 21 15:20 tmp

SCP로 압축 후 전송

1. 원격으로 보내기

tar czf archive.tar.gz /path/to/local/dir
scp archive.tar.gz user@remote_host:/path/to/remote/dir

2. 원격에서 가져오기

scp user@remote_host:/path/to/remote/dir/archive.tar.gz .
tar xzf archive.tar.gz

rsync를 이용한 압축 전송

rsync -avz /path/to/local/dir/ user@remote_host:/path/to/remote/dir/

 

728x90
반응형