programing

bash에서 모든 하위 디렉터리의 모든 파일을 하나의 압축 파일로 gzip하는 방법

linuxpc 2023. 4. 26. 23:03
반응형

bash에서 모든 하위 디렉터리의 모든 파일을 하나의 압축 파일로 gzip하는 방법

중복 가능성:
g디렉토리 집합 압축 및 tar 압축 파일 만들기

게시물은 디렉터리 구조 내에서 각 파일을 개별적으로 gzip하는 방법을 설명합니다.하지만, 저는 약간 다른 것을 해야 합니다.저는 특정 디렉토리에 있는 모든 파일에 대해 하나의 큰 gzip 파일을 생성해야 합니다.또한 압축 파일의 출력 파일 이름(예: files.gz)을 지정하고 이전 압축 파일 파일이 이미 있는 경우 파일을 덮어쓸 수 있어야 합니다.

tar -zcvf compressFileName.tar.gz folderToCompress

폴더의 모든 항목ToCompress는 compressFileName으로 이동합니다.

편집: 리뷰와 댓글을 보고 사람들이 확장자 없이 compressFileName과 혼동할 수 있다는 것을 깨달았습니다.원하는 경우 compressFileName과 함께 .tar.gz 확장자(제안된 대로)를 사용할 수 있습니다.

명령줄을 재귀적으로 작동하는 많은 압축 방법이 있으며 최종 사용자가 누구인지 알 수 있습니다.

예를 들어, 윈도우를 실행하는 사람에게 전송하려면 zip이 가장 좋습니다.

zip -r file.zip folder_to_zip

unzip filenname.zip

다른 리눅스 사용자들을 위한 것이거나 당신의 셀카는 훌륭합니다.

tar -cvzf filename.tar.gz folder

tar -cvjf filename.tar.bz2 folder  # even more compression

#change the -c to -x to above to extract

타르를 조심해야 하며, 예를 들어 내가 달리는 경우에는 타르가 어떻게 얼룩지고 추출되는지 주의해야 합니다.

cd ~
tar -cvzf passwd.tar.gz /etc/passwd
tar: Removing leading `/' from member names
/etc/passwd


pwd

/home/내 사용자 이름

tar -xvzf passwd.tar.gz

이렇게 하면 /home/myusername/etc/passwd가 생성됩니다.

모든 버전의 tar가 이 작업을 수행하는지 확실하지 않음:

 Removing leading `/' from member names

@amitchhajer의 게시물은 GNU tar에서 작동합니다.다른 사용자가 이 게시물을 발견하고 NON에서 작업하기 위해 필요한 경우GNU시스템은 다음과 같은 작업을 수행할 수 있습니다.

tar cvf - folderToCompress | gzip > compressFileName

보관 파일을 확장하는 방법

zcat compressFileName | tar xvf -

언급URL : https://stackoverflow.com/questions/12331633/how-to-gzip-all-files-in-all-sub-directories-into-one-compressed-file-in-bash

반응형