사용자 도구

사이트 도구


linux:tar

tar

압축

  • z : gzip 압축
  • j : bz2 압축
tar cvjf archive.tar.bz2 /path/to/archive

특정 디렉토리 아래 모두 압축

# xxx/yyy/zzz 일때, yyy 아래의 모든 파일(zzz 포함)일 때, 단 yyy 라는 부모 경로는 빼고
 
cd xxx/yyy
tar cvzf yyy.tar.gz *

부모 경로 제외하기

tar 압축시 압축 경로를 모두 적어주면 부모 경로의 경로명까지 포함하여 압축된다. 이때 부모 경로는 제외하고 압축하고자 한다면 -C 부모경로를 붙인다.

tar cvjf xx.tar.bz2 -C /path/to/parent 압축할파일1 압축할파일2 ...
tar cvjf xx.tar.bz2 -C /path/to/parent . # 해당 디렉토리 아래 전체
  • -C 옵션은 압축을 풀 때 풀린 내용이 저장될 대상 디렉토리 지정할 때도 사용한다.
  • --exclude=패턴 : 일치하는 패턴의 파일은 제외

Dot file(hidden file) 까지 압축

  • 압축 대상 파일을 지정할 때 . 으로 혹은 .*으로 지정한다.

특정 디렉토리에 압축 풀기

  • --directory=directory
tar xf source.tar[.gz|.bz2|.xz] --directory=directory

최상위 디렉토리 제외하고 압축풀기

  • IntelliJ IDEA 압축파일은 빌드번호로 된 디렉토리로 감싸져 압축돼 있는데, 이를 무시하고 특정 디렉토리를 최상위로 해서 압축 풀기.
tar xvzf ideaIU-2020.2.1.tar.gz --strip=1 -C ~/.local/share/ideaIU

Backup 하기

tar -cvpzf backup.tar.gz \
  --exclude=/backup.tar.gz \
  --one-file-system \
  -C <원하는디렉토리> .
  • --one-file-system : 동일 파티션내의 데이터만, (link 로 다른데로 걸려있는 것들 제외)
  • $HOME 기준으로 여러 디렉토리 백업하기
# "vivaldi default profile 에서 "Service Workder"는 캐시 역할이라서 제외하고 백업
cd ~
tar cvpzf /tmp/home-backups.tar.gz --one-file-system \
  --exclude="Service Worker" \
  .config/JetBrains \
  .local/share/JetBrains/ .config/vivaldi/Default
 
# 복원
cd ~
tar xvzf /tmp/home-backups.tar.gz

참조

linux/tar.txt · 마지막으로 수정됨: 2022/07/24 11:01 저자 kwon37xi