명령줄을 통해 폴더의 모든 파일을 압축하고 압축되지 않은 버전을 삭제하려면 어떻게 해야 합니까?

명령줄을 통해 폴더의 모든 파일을 압축하고 압축되지 않은 버전을 삭제하려면 어떻게 해야 합니까?

디스크의 공간을 절약하기 위해 압축하려는 파일의 압축되지 않은 버전이 포함된 백업 디스크가 있습니다. 압축할 파일이 포함된 디스크가 가득 찼습니다(약 3TB 중 17GB는 여유 공간입니다). 디스크의 모든 파일을 살펴보고 압축되지 않은 버전을 제거하는 동안 압축하기 위해 실행할 수 있는 명령이나 스크립트가 있습니까? 예를 들어 f1 f2 f3과 같은 폴더가 있는 경우 f1.tar.gz f2.tar.gz f3.tar.gz로 끝내고 압축되지 않은 원래 폴더를 삭제하여 더 많은 공간을 확보하고 싶습니까? 또한 하위 폴더에서도 작동합니까?

편집: 손상 위험 없이 파일을 최대한 압축하고 싶습니다. 대략 150개의 상위 디렉터리가 있으며 대부분 10~50개의 하위 폴더로 구성되며 일부에는 이미 압축된 파일이 포함되어 있습니다. 단순화된 예로, 내 파일 구조는 다음과 같습니다.

Parent folders:
parent1 parent2 parent3

이들 각각에는 다음과 같은 내용이 있을 수 있습니다.

child1 child2 child3 file1.zip

누구나 갖고 있을 수도 있어요

file1 file2.zip file2.tar.gz file3

물론 일부 상위 폴더에는 하위 폴더 없이 파일만 포함되어 있습니다. 내가 원하는 것은 bash에서 스크립트를 실행하거나 tar put 명령을 사용하여 다음과 같이 상위 폴더를 압축하는 것입니다.

parent1.tar.gz parent2.tar.gz parent3.tar.gz

압축되지 않은 상위 ​​폴더를 삭제하는 동안 명령은 먼저 parent1.tar.gz를 압축한 다음(동일한 하드 드라이브에 tarball 파일을 위한 충분한 공간이 있다고 가정) 삭제하므로 파일 구조는 다음과 같습니다.

parent1.tar.gz parent2 parent3,

그런 다음 명령은 parent2 및 parent3에 대해 동일한 작업을 수행하며 최종 파일 구조는 다음과 같습니다.

parent1.tar.gz parent2.tar.gz parent3.tar.gz

가능하다면 이 작업을 하위 폴더로 확장하는 방법을 아는 것이 좋지만 이것이 너무 복잡하거나 추가 공간을 많이 절약하지 못하는 경우에는 필요하지 않습니다. 각 파일이 차지하는 공간 순서대로 파일을 정렬하는 방법을 알고, 프로세스를 자동화하는 데 충분한 공간을 확보하기 전에 개별적으로 압축해야 하는 파일 수를 확인하는 것도 좋을 것입니다. 불필요한.

답변1

누군가가 스크립트를 가지고 있을 수도 있고 작성할 수도 있습니다. 이런 종류의 일을 할 때 나는 다음 중 하나를 zip사용합니다 .대본gzip 또는 bzip2를 사용합니다. 둘 다 보관이 완료된 후 파일을 삭제하는 규정이 있습니다.

문제는

  • 물론 각 디렉토리에 대해 zip 아카이브를 작성할 수 있습니다.
  • 아카이브가 완료될 때까지 디렉터리를 삭제할 수 없습니다.
  • 예를 들어 파일을 추가하는 방법으로 압축된 아카이브를 업데이트할 수 없습니다.

따라서 첫 번째 아카이브를 생성하려면 충분한 여유 공간이 있어야 하며, 더 큰 아카이브를 작성하려면 점차적으로 충분한 공간을 확보해야 합니다. 아마도 압축 파일(예: png, jpg, pdf)이 많지 않을 것입니다. 그렇지 않으면 공간이 확보되지 않습니다.

공간이 부족할 확률이 높지 않은 경우 문제는 압축/삭제 중인 디렉터리의 스크립트 루프일 뿐입니다. 그러나 3Tb, 17Gb의 여유 공간이 있으면 일부 디렉터리는 꽤 커질 수 있습니다. 이것이 설명된 간단한 솔루션을 방해하는지 확인하려면 몇 가지 분석을 수행해야 합니다.

추가 자료:

관련 정보