오래된 로그를 이동하는 방법 - mysql 로그

오래된 로그를 이동하는 방법 - mysql 로그

이전 binlog를 디렉터리로 이동하고 새 폴더로 이동하기 전에 압축해야 합니다.

공간 부족으로 인해 문제가 발생했습니다.

아래 명령이 작동하지 않습니다.

ls -t binlog* | tail -n +4 | xargs mv /path-to-directory
ls -t binlog* | tail -n +4 | xargs echo mv /path-to-directory

답변1

정말로 logrotate를 사용하고 싶지 않다면 1970.01.01 이후 마지막으로 발견된 파일의 수정 시간(초)을 인쇄하면서 find출력을 구문 분석하지 않는 것을 사용하십시오.ls

$ find ./* -maxdepth 0 -name "binlog*" -printf "%T@ %f\0" \
 | sort -z -k 1 -r \
 | cut -z -d " " -f2- \
 | tail -z -n +4 \
 | xargs -0 -I {} mv -f "{}" /path/to/directory/

-z위의 내용은 NUL로 구분된 행을 사용하기 위해 ( sort, cuttail) 또는 -0( )를 허용하는 GNU coreutils를 가정합니다. xargs즉, 파일 이름에 줄바꿈이 있어도 코드가 올바르게 작동합니다.

파일 이름에 개행 문자가 없다고 확신할 수 있다면, \0첫 번째 필드(파일의 마지막 수정 시간)에서 줄 단위로 정렬하기 때문에 발견된 각 파일을 null( ) 로 종료할 필요가 없다는 것이 밝혀졌습니다. )에는 문제가 있는 문자가 포함되어 있지 않습니다. 위 내용을 다음과 같이 단순화할 수 있습니다.

$ find ./* -maxdepth 0 -name "binlog*" -printf "%T@ %f\n" \
 | sort -k 1 -r \
 | cut -d " " -f2- \
 | tail -n +4 \
 | xargs -I {} mv -f "{}" /path/to/directory/

관련 정보