이 명령을 사용하여 문서 루트 백업이 포함된 zip 파일을 추출했습니다.
unzip /var/www/html/html-2018-01-08-02\:52\:11.zip -d /var/www/html/
이렇게 하면 문서 루트 내의 모든 데이터가 추출되지만 문제가 있습니다. 현재 상태는 중복된 문서 루트입니다.
/var/www/html/var/www/html/DATA
물론 데이터를 다시 이동한 mv
다음 를 사용하여 중복 문서 루트를 제거 할 수 있지만 cd /var/www/html && rm -rf /var/www/html
가장 쉬운 해결 방법은 양식을 통해 직접 수행하는 것입니다 unzip
.
애초에 중복이 발생하지 않기를 바랍니다.
사용 방법은 무엇입니까? zip 파일의 특정 레이어/레벨만 압축을 해제합니까 unzip
?
예를 들어 내 우편번호에는 다음이 포함됩니다.
- 첫 번째 줄:
/var
. - 2 층:
/var/www
. - 3층:
/var/www/html/
.
네 번째 레벨(물론 0부터 시작하는 인덱싱에서는 세 번째 레벨)의 인덱스 노드만 추출하고 싶습니다.
최종 상태는 다음과 같아야 합니다.
/var/www/html/DATA
답변1
unzip
경로별로 추출할 파일을 제한 할 수 있습니다 .
와일드카드 사용:
unzip foo.zip '*/*/*/*'
리터럴 구문을 사용하십시오.
unzip foo.zip 'var/www/html/*'
예를 들어:
$ zipinfo ../1.zip
Archive: ../1.zip
Zip file size: 1134 bytes, number of entries: 8
drwxrwxr-x 3.0 unx 0 bx stor 18-Jan-28 13:53 1/
drwxrwxr-x 3.0 unx 0 bx stor 18-Jan-28 13:53 1/2/
drwxrwxr-x 3.0 unx 0 bx stor 18-Jan-28 13:53 1/2/3/
drwxrwxr-x 3.0 unx 0 bx stor 18-Jan-28 13:53 1/2/3/4/
-rw-rw-r-- 3.0 unx 0 bx stor 18-Jan-28 13:53 1/2/3/4/d
-rw-rw-r-- 3.0 unx 0 bx stor 18-Jan-28 13:53 1/2/3/c
-rw-rw-r-- 3.0 unx 0 bx stor 18-Jan-28 13:53 1/2/b
-rw-rw-r-- 3.0 unx 0 bx stor 18-Jan-28 13:53 1/a
8 files, 0 bytes uncompressed, 0 bytes compressed: 0.0%
$ unzip ../1.zip '*/*/*/*'
Archive: ../1.zip
creating: 1/2/3/
creating: 1/2/3/4/
extracting: 1/2/3/4/d
extracting: 1/2/3/c