여러개의 tar 명령어를 한번에 쓸수 있나요?
tar로 특정파일을 여러번 압축해제해야할 일이생겼습니다.
임베디드 환경에서 작업을 하다보니 사소한 특정 압축파일을 여러번 압축해제해야하는 경우가 생겼습니다.
압축파일이름은 TEST.tar.gz 입니다. 이 압축파일은 300M정도를 차지하고있습니다.
TEST.tar.gz 압축파일에는 AAA BBB CCC 라는 디렉토리가 존재합니다.
TSET.tar.gz의 세부 디렉터리를 특정위치에 각각 압축을 해제하고자하고있는데
300M라는 압축파일에 여러번 접근하다보니 읽는 시간이 오래걸리는것같습니다.
지금은 각각 AAA와 BBB CCC 라는 디렉터리를 각각 다른 특정위치에 압축을 해제하기 위하여 다음과 같이 하고있습니다.
# tar xvzfp TEST.tar.gz -C /root/test1 AAA
# tar xvzfp TEST.tar.gz -C /root/test2 BBB
# tar xvzfp TEST.tar.gz -C /root/test3 CCC
위의 내용을 보시면 TEST.tar.gz라는 압축파일에 총 3번을 읽어들여서 AAA라는 디렉터리는 /root/test1에 풀고 BBB는 /root/test2에 CCC는 /root/test3에 풀고있습니다.
각각의 명령어줄을 실행할때마다 TEST.tar.gz의 파일 전체 구조를 읽어들여서 매줄마다 딜레이가 생기는것 같은데
이 3개의 명령어를 한번의 tar 명령어로 실행할수 없나요? 그러면
TEST.tar.gz를 3번 읽어들이는 대신 1번 읽어들여서 그만큼 시간을 절약할수 있지 않나 생각하고 있습니다.
방법이 있을까요 ?? ?
v 옵션만 빼도 빨라집니다. 원하시는 기능은 딱히
v 옵션만 빼도 빨라집니다.
원하시는 기능은 딱히 없어 보이네요.
CPU와 공간 문제로 같은 압축을 세 번 푸는게 어려운 경우라면
그냥 같은 볼륨내에 tar를 푸시고 mv 하는게 제일 나을 것 같아 보입니다만.
---
http://coolengineer.com
원하시는 기능에 근접하려나...
배쉬쉘에서 각 명령어 뒤에 & 를 더하면
실행을 background에서 실행 할수 있는 기능이 있습니다.
고로
# tar xvzfp TEST.tar.gz -C /root/test1 AAA &
# tar xvzfp TEST.tar.gz -C /root/test2 BBB &
# tar xvzfp TEST.tar.gz -C /root/test3 CCC &
# 명령어...
이렇게 치시면 3개의 명령이 동시에 실행 되는 것과 같습니다.
속도가 빨라지지는 않을것 같습니다.
아마도...
# tar xvzfp TEST.tar.gz -C /root/test1 AAA &> /dev/null &
# tar xvzfp TEST.tar.gz -C /root/test2 BBB &> /dev/null &
# tar xvzfp TEST.tar.gz -C /root/test3 CCC &> /dev/null &
# 명령어...
에러가 없는 명령어라면 이렇게 하셔야 될것입니다.
아니면 stdout을 /dev/null에 보내고 stderr를 화일로 저장해도 될것 같습니다.
댓글 달기