파일 크기 줄이기

파일 크기 줄이기

각각의 파티션 크기가 3GB를 넘는 두 개의 파일이 있는데 /var/log파일을 삭제하거나 이동하지 않고 여유 공간을 확보해야 합니다. 이로 인해 시스템이 중단될 수 있습니다.

또한 수천 개의 행을 삭제할 수 없습니다 vi + dd.

도움이 되는 아이디어가 있나요?

문서:

1-messages

2- 내 웹 서버 로그 파일.

답변1

다음을 사용하는 것과 달리 rm파일이 아직 열려 있어도 파일을 잘라서 디스크 공간을 확보할 수 있습니다.

> /var/log/big1.log
> /var/log/big2.log

하지만 먼저 별도의 시스템에서 테스트해 보세요. 파일의 inode 번호가 변경되었는지 확인하세요. 그렇지 않다면 괜찮습니다.

답변2

기존 파일의 전체 내용을 보존하려면 해당 파일을 다른 임시 공간에 압축한 다음 압축되지 않은 각 파일을 압축된 파일로 바꿔야 합니다. 그렇지 않은 경우에는 이전 로그 파일을 삭제하거나 다른 곳에 보관하세요.

다음은 내용 손실 없이 로그 파일을 압축하기 위한 제안 사항입니다. 그러나 로그 파일을 계속해서 늘리면 파일 시스템이 가득 차는 문제를 영구적으로 해결하기보다는 지연시킬 뿐이라는 점을 명심해야 합니다.

압축할 오래된 파일을 식별합니다. (해당 중에는 사용하거나 열 수 없습니다.지금녹음용. ) 내 예에서는 이것이다 big1.log.

압축되지 않은 가장 큰 파일을 저장할 수 있는 파일 시스템 블록을 결정합니다. 내 예에서는 이것이 이라고 가정하겠습니다 /home.

실제 시나리오에서는 루프를 사용하여 for일련의 파일을 반복합니다. 단일 파일에 대한 단계는 다음과 같습니다.

logfile='/var/log/big1.log'                      # The logfile to be compressed

if gzip -c "$logfile" >/home/log.gz
then
    touch --reference "$logfile" /home/log.gz    # Capture timestamp of last update
    chown --reference "$logfile" /home/log.gz    # Capture ownerships
    chmod --reference "$logfile" /home/log.gz    # Capture permissions
    rm -f "$logfile"                             # Make space
    mv -f /home/log.gz "$logfile.gz"             # Rename with correct suffix
fi

관련 정보