Linux 서버의 공간을 절약하려고 노력했는데 하위 폴더에 22GB의 이미지가 포함된 폴더가 있습니다.
그래서 나는 그것들을 압축하기로 결정했습니다.
먼저 tar를 사용합니다.
tar -zcf folder.tar folder
그런 다음 gzip으로 압축
gzip folder
마지막으로 만약을 대비해 bzip2
bzip2 folder
결국, folder.tar.gz.bzip2
모든 의 총합은 여전히 22GB입니다! 더 정밀한 정밀도를 사용하고 1%의 공간을 절약하세요!
내가 여기서 뭔가 잘못하고 있는 걸까요? 저는 절감액이 1%보다 몇 배 더 클 것으로 기대합니다!
파일을 어떻게 압축할 수 있나요?
답변1
압축률은매우압축하려는 대상에 따라 다릅니다. 동일한 이진 공간에서 표현할 수 있는 전체 숫자 범위를 최대한 활용하지 못하기 때문에 텍스트가 매우 잘 압축됩니다. 따라서 이를 수행하는 형식(예: 압축 파일)은 텍스트 인코딩에서 의미가 없는 모든 이진수를 사용하여 더 적은 공간에 동일한 정보를 저장할 수 있으며 단일 바이트에서 문자를 효율적으로 표현할 수 있습니다. 진행하고 그런 좋은 압축 비율을 얻는 것입니다.
파일이 이미 압축된 경우 일반적으로 다시 압축해도 큰 이점이 없습니다. 이것이 추가 공간을 절약한다면 첫 번째 압축 알고리즘이 다소 나쁘다는 신호일 수 있습니다. 질문의 성격으로 볼 때, 그 중 다수는 미디어 파일이므로 이미 압축되어 있다고 가정합니다(알고리즘은 압축 해제 속도를 우선시하지만). 따라서 해당 파일로부터 많은 정보를 얻지 못할 것입니다. 돌 속의 피와 비슷합니다. 정보를 잃지 않고 가능한 한 작게 만들어졌습니다.
공간이 정말 걱정된다면 그냥 "bzip2 -9"를 하고 good이라고 부르면 됩니다. 하지만 XZ의 비율에 대해서는 좋은 소식을 들었습니다. 나는 XZ를 직접 사용하지 않았지만(다른 사람의 자료를 압축 해제하는 것 제외) bzip2보다 비율이 더 좋아야 하지만 압축/압축 해제하는 데 시간이 더 오래 걸립니다.
답변2
데이터가 이미 고도로 압축되어 더 이상 정보를 사용할 수 없기 때문에 압축 시도가 실패했습니다. 자세한 설명은 다른 답변을 참조하세요. 그러나 동의할 수 있는 경우손실이 많은압축 및무손실이전에 시도한 것처럼 이미지를 상당히 압축할 수 있습니다. 하지만 데이터가 삭제되었기 때문에 복구할 수 없습니다.
다음은 imagemagick을 사용하여 모든 JPEG 이미지를 다시 압축하는 예입니다. 파일을 덮어쓰게 된다는 점에 유의하세요.
find image_directory -type f -name "*.jpg" -exec mogrify -quality 75% {} \+
답변3
가장 일반적인 이미지 형식은 이미 압축되어 있으므로(jpg, png, gif 등) 비용을 많이 절약할 수는 없습니다. 1%는 좋은 것 같습니다.
더 많은 압축을 추가하면 실제로 결과가 (약간) 더 커질 수 있습니다. 압축 알고리즘은 데이터를 압축하는 데 아무 것도 하지 않고 형식(예: gzip)이 헤더 및/또는 구조적 정보를 출력에 추가해야 하기 때문입니다.
죄송합니다! png를 사용하는 경우 다음 명령을 사용하여 파일을 축소해 볼 수 있습니다.스매시.
답변4
제기할 가치가 있는 또 다른 점: 여러 압축 도구/알고리즘을 사용하면 실제로 최종 결과의 크기가 부풀어 오르고 필요한 것보다 커질 수 있습니다. 즉, 100GB를 10GB로 압축한 다음 다시 압축하려고 하면 압축한 내용과 압축한 내용에 따라 최대 15GB가 될 수 있습니다.
tar cjvf container.tar.bz2 /target
개인적으로 저는 이중 압축으로 절약되는 디스크 공간의 양이 미미하기 때문에 아무것도 하지 않습니다 .