운영체제/Linux

[Linux] Tar를 이용한 원격지 or Local 파일 copy

louky 2024. 1. 5. 08:31
반응형

A_SVR :  로컬서버

B_SVR : 원격지 서버(Remote server)

 

CASE1. A 라는 local서버에서   B라는  원격지 서버로 "test"라는 파일(또는 디렉토리를)  Tar 명령어를 통해 보내고자  할 경우 아래와 같이 명령어를 사용할 수 있다.

 

Usage )  cd [PATH] && tar cf - test | ssh -oStrictHostKeyChecking=no root@B_SVR_IP "cd [SAVE_PATH] && tar xf -"

# cd [PATH] && tar cf - test | ssh -oStrictHostKeyChecking=no root@B_SVR_IP "cd [SAVE_PATH] && tar xf -"

 

CASE2. A 라는 local서버에서   B라는  원격지 서버 내에 있는 "test"라는 파일(또는 디렉토리를)  Tar 명령어를 통해 가져오고자  할 경우 아래와 같이 명령어를 사용할 수 있다. 

Usage )  ssh -oStrictHostKeyChecking=no root@B_SVR_IP "cd [PATH] && tar cf - test" | tar xf -

#  ssh -oStrictHostKeyChecking=no root@B_SVR_IP "cd [PATH] && tar cf - test" | tar xf -

 

ADD - 2022.07.05)

Local 파일 copy

$ tar cf - {SRC_PATH} | (cd {DEST_PATH} ; tar xfp -)

 

ADD - 2023.03.23)

숨긴 파일 or 디렉토리까지 모두 copy

  • {SRC_PATH}  << 이렇게 할 경우 숨겨진 파일 또는 디렉토리는 제외된다. 
  • {SRC_PATH}/. << 이렇게 해야만 모두 포함되어 copy된다. 
# src 경로 뒤에 .(마침표)를 해준다
$ tar cf - {SRC_PATH}/. | (cd {DEST_PATH} ; tar xfp -)

 

ADD - 2024.01.05)

특정 파일 또는 디렉토리 제외하고 Copy

제외 옵션을 사용해야 하는 경우 아래와 같이 tar옵션에도 "대시(-)"를 추가해야 정상적은 옵션으로 인식 되어 파일을 제외 할 수 있다. 

  • -X {EXCLUDE_LIST_FILE}  또는 --exclude={패턴}
# exluce_list.list 라는 파일에 제외할 파일 또는 디렉토리 목록을 저장한다.
$ tar -X exclude_list.list -cf - . | (cd {target_path} ; tar xpf - )
또는
#일반적인 tar exclude 옵션을 사용한다. 단, "cf" 옵션에 대시(-)를 추가 한다.
$ tar --exclude=test.txt -cf - . | (cd {target_path} ; tar xpf - )

 

필자가 사용한 exclude_list.list파일 안에는 아래와 같은 목록으로 되어 있다.

# 파일 확장자는 .txt가 되었던 .list 되었던 큰 상관은 없다.
$ cat exclude_list.list
.git
.github
.gitignore
반응형