[linux] 모든 하위 디렉토리의 모든 파일을 bash에서 하나의 압축 파일로 압축하는 방법

가능한 중복 :
디렉토리 세트를 압축하고 tar 압축 파일 작성

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



답변

tar -zcvf compressFileName.tar.gz folderToCompress

folderToCompress의 모든 것은 compressFileName으로 이동합니다

편집 : 검토 및 의견 후 사람들이 확장자없이 compressFileName과 혼동 될 수 있음을 깨달았습니다. 원하는 경우 compressFileName과 함께 .tar.gz 확장명 (제안대로)을 사용할 수 있습니다


답변

재귀 적으로 작동하는 많은 압축 방법이 있으며 최종 사용자가 누구인지 아는 것이 좋습니다.

즉, Windows를 실행하는 누군가에게 보내야한다면 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 / myusername

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 -


답변