Как переместить старые журналы - журналы mysql

Как переместить старые журналы - журналы mysql

Мне нужно переместить старые бинарные журналы в каталог и сжать их перед перемещением в новую папку.

У меня нехватка места, из-за чего у нас возникают проблемы.

команда ниже не работает.

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, используйте findnot для анализа вывода ls, при этом выводя время изменения последнего найденного файла в секундах с 1970.01.01.

$ 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/

Вышеприведенное предполагает использование GNU coreutils, которые допускают -z( sort, cutи tail) или -0( xargs) для использования строк, разделенных NUL, что означает, что код работает правильно даже при наличии новых строк в именах файлов.

Если вы уверены, что в именах файлов нет новых строк, то оказывается, что вам не нужно завершать каждый найденный файл нулем ( \0), поскольку вы сортируете построчно по первому полю (время последнего изменения файлов), которое никогда не содержит проблемных символов. Вы можете упростить вышесказанное до:

$ 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/

Связанный контент