728x90
반응형
개요
"tar" 명령을 이용하여 파일을 묶을 때, 특정 파일이나 폴더들은 제외하고 묶고 싶은 경우가 있는데, 이 때는 어떻게 하면 될지 알아 보겠습니다.
다음과 같은 구조의 소스가 있다고 가정하고, 불필요한 "logs", "video", "pycache" 폴더들을 제외하고 묶는 방법을 알아 보겠습니다.
pi@raspberrypi:~ $ tar cvf tracker.tar.gz tracker/
tracker/
tracker/jpg2avi/
tracker/jpg2avi/create_video.py
tracker/TrackingTools/
tracker/TrackingTools/matching.py
tracker/TrackingTools/tracking_obj.py
tracker/TrackingTools/kalman_filter.py
tracker/TrackingTools/basetrack.py
tracker/TrackingTools/__pycache__/
tracker/TrackingTools/__pycache__/matching.cpython-37.pyc
tracker/TrackingTools/__pycache__/kalman_filter.cpython-37.pyc
tracker/TrackingTools/__pycache__/basetrack.cpython-37.pyc
tracker/TrackingTools/__pycache__/byte_tracker.cpython-37.pyc
tracker/TrackingTools/byte_tracker.py
tracker/Utils/
tracker/Utils/file_logger.py
tracker/Utils/DataSource.py
tracker/Utils/__pycache__/
tracker/Utils/__pycache__/DataSource.cpython-37.pyc
tracker/Utils/__pycache__/visualize.cpython-37.pyc
tracker/Utils/__pycache__/file_logger.cpython-37.pyc
tracker/Utils/visualize.py
tracker/DetectionTools/
tracker/DetectionTools/nms.py
tracker/DetectionTools/demo_process.py
tracker/DetectionTools/preprocess.py
tracker/DetectionTools/__pycache__/
tracker/DetectionTools/__pycache__/demo_process.cpython-37.pyc
tracker/DetectionTools/__pycache__/nms.cpython-37.pyc
tracker/DetectionTools/__pycache__/preprocess.cpython-37.pyc
tracker/video/
tracker/video/vidf1_444.avi
tracker/logs/
불필요한 폴더 제외하고 나열하기
폴더나 파일이 몇 개 없을 경우에는 다음과 같이 묶을 대상들을 그냥 나열하는 방법이 가장 쉽습니다.
pi@raspberrypi:~ $ tar cvf tracker.tar.gz tracker/jpg2avi/ tracker/TrackingTools/ tracker/Utils/ tracker/DetectionTools/
tracker/jpg2avi/
tracker/jpg2avi/create_video.py
tracker/TrackingTools/
tracker/TrackingTools/matching.py
tracker/TrackingTools/tracking_obj.py
tracker/TrackingTools/kalman_filter.py
tracker/TrackingTools/basetrack.py
tracker/TrackingTools/__pycache__/
tracker/TrackingTools/__pycache__/matching.cpython-37.pyc
tracker/TrackingTools/__pycache__/kalman_filter.cpython-37.pyc
tracker/TrackingTools/__pycache__/basetrack.cpython-37.pyc
tracker/TrackingTools/__pycache__/byte_tracker.cpython-37.pyc
tracker/TrackingTools/byte_tracker.py
tracker/Utils/
tracker/Utils/file_logger.py
tracker/Utils/DataSource.py
tracker/Utils/__pycache__/
tracker/Utils/__pycache__/DataSource.cpython-37.pyc
tracker/Utils/__pycache__/visualize.cpython-37.pyc
tracker/Utils/__pycache__/file_logger.cpython-37.pyc
tracker/Utils/visualize.py
tracker/DetectionTools/
tracker/DetectionTools/nms.py
tracker/DetectionTools/demo_process.py
tracker/DetectionTools/preprocess.py
tracker/DetectionTools/__pycache__/
tracker/DetectionTools/__pycache__/demo_process.cpython-37.pyc
tracker/DetectionTools/__pycache__/nms.cpython-37.pyc
tracker/DetectionTools/__pycache__/preprocess.cpython-37.pyc
하지만, "pycache" 폴더의 불필요한 파일들도 포함됩니다.
--exclude 옵션 활용
"--exclude"을 이용하면 지정된 패턴과 일치하는 폴더 및 파일들은 묶을 대상에서 제외됩니다.
아래와 같이 묶을 폴더를 먼저 지정한 후에 "--exclude" 옵션을 주면 다음과 같은 경고가 발생합니다.
pi@raspberrypi:~ $ tar cvf tracker.tar.gz tracker/ --exclude="__pycache__" --exclude="tracker/video"
...
tar: The following options were used after any non-optional arguments in archive create or update mode. These options are positional and affect only arguments that follow them. Please, rearrange them properly.
tar: --exclude ‘__pycache__’ has no effect
tar: --exclude ‘tracker/video’ has no effect
tar: Exiting with failure status due to previous errors
"--exclude" 옵션은 묶을 대상들 보다 앞에 적어 주어야만 합니다.
pi@raspberrypi:~ $ tar cvf tracker.tar.gz --exclude="__pycache__" --exclude="tracker/video" tracker/
tracker/
tracker/jpg2avi/
tracker/jpg2avi/create_video.py
tracker/TrackingTools/
tracker/TrackingTools/matching.py
tracker/TrackingTools/tracking_obj.py
tracker/TrackingTools/kalman_filter.py
tracker/TrackingTools/basetrack.py
tracker/TrackingTools/byte_tracker.py
tracker/Utils/
tracker/Utils/file_logger.py
tracker/Utils/DataSource.py
tracker/Utils/visualize.py
tracker/DetectionTools/
tracker/DetectionTools/nms.py
tracker/DetectionTools/demo_process.py
tracker/DetectionTools/preprocess.py
tracker/logs/
"--exclude" 옵션을 줄 때 다음과 같이 "*" 패턴 없이 "/"로 시작하거나 끝나는 옵션값은 원래 의도와는 다르게 제외하고자 했던 파일들이 걸러지지 않습니다.
pi@raspberrypi:~ $ tar cvf tracker.tar.gz \
--exclude="/__pycache__" \
--exclude="tracker/video" \
tracker/
tracker/
tracker/jpg2avi/
tracker/jpg2avi/create_video.py
tracker/TrackingTools/
tracker/TrackingTools/matching.py
tracker/TrackingTools/tracking_obj.py
tracker/TrackingTools/kalman_filter.py
tracker/TrackingTools/basetrack.py
tracker/TrackingTools/__pycache__/
tracker/TrackingTools/__pycache__/matching.cpython-37.pyc
tracker/TrackingTools/__pycache__/kalman_filter.cpython-37.pyc
tracker/TrackingTools/__pycache__/basetrack.cpython-37.pyc
tracker/TrackingTools/__pycache__/byte_tracker.cpython-37.pyc
tracker/TrackingTools/byte_tracker.py
tracker/Utils/
tracker/Utils/file_logger.py
tracker/Utils/DataSource.py
tracker/Utils/__pycache__/
tracker/Utils/__pycache__/DataSource.cpython-37.pyc
tracker/Utils/__pycache__/visualize.cpython-37.pyc
tracker/Utils/__pycache__/file_logger.cpython-37.pyc
tracker/Utils/visualize.py
tracker/DetectionTools/
tracker/DetectionTools/nms.py
tracker/DetectionTools/demo_process.py
tracker/DetectionTools/preprocess.py
tracker/DetectionTools/__pycache__/
tracker/DetectionTools/__pycache__/demo_process.cpython-37.pyc
tracker/DetectionTools/__pycache__/nms.cpython-37.pyc
tracker/DetectionTools/__pycache__/preprocess.cpython-37.pyc
tracker/logs/
"--exclude" 옵션을 줄 때 다음과 같이 "{ 'exclude1', 'exclude2', 'exclude3' }"과 같이 여러 파일명을 한꺼번에 넣어 줄 수도 있습니다. 이 때 주의할 점은 폴더명 등은 안된다는 점입니다.
그리고 또 하나 주의해야할 점은 "--exclude=" 옵션값은 파일명을 우선 적고, "*"가 적용된 폴더는 가장 나중에 적어야 한다는 점입니다.
pi@raspberrypi:~ $ tar cvf tracker.tar.gz --exclude={"tracker/video/vidf1_444.avi","*/__pycache__*"} tracker/
tracker/
tracker/jpg2avi/
tracker/jpg2avi/create_video.py
tracker/TrackingTools/
tracker/TrackingTools/matching.py
tracker/TrackingTools/tracking_obj.py
tracker/TrackingTools/kalman_filter.py
tracker/TrackingTools/basetrack.py
tracker/TrackingTools/byte_tracker.py
tracker/Utils/
tracker/Utils/file_logger.py
tracker/Utils/DataSource.py
tracker/Utils/visualize.py
tracker/DetectionTools/
tracker/DetectionTools/nms.py
tracker/DetectionTools/demo_process.py
tracker/DetectionTools/preprocess.py
tracker/video/
tracker/logs/
참고자료
- "tar(1) — Linux manual page":https://man7.org/linux/man-pages/man1/tar.1.html
'Linux,Unix,BSD' 카테고리의 다른 글
[linux] GStreamer에서 'Missing element: ITU H.264 decoder' 오류 (0) | 2023.10.19 |
---|---|
[Embedded] Orange Pi 5에 Armbian을 이용하여 USB memory 부팅 시도기 (실패) (0) | 2023.02.14 |
[Linux] ubuntu 환경에서 7zip 사용하기 (0) | 2022.12.01 |
[linux] 일반 계정으로 80 포트로 웹 서비스하는 방법들 (0) | 2022.06.24 |
[shell] Bad Substitution(bash) (0) | 2022.06.23 |