powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Архивирование логов на bash
17 сообщений из 17, страница 1 из 1
Архивирование логов на bash
    #37264709
ilik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ привет. Помогите плз: нужно сархивировать на bash файлы в папке по заданному критерию, чтобы для каждого файла был создан отдельный архив. Вот что я попробовал сделать, выводит просто названия файлов но ничего с ними не делает. Попробовал сделать через массив то же самое. Прошу помочь и не судите строго))

myfile= find ./* -name "*[0-9].log"

for x in $myfile
do
#echo $x && tar czvf $x.tar.gz --force-local $x
echo
done
...
Рейтинг: 0 / 0
Архивирование логов на bash
    #37264900
ilik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
изменил на

for file in *[0-9].log
do

echo "file=$file"
tar czvf "$file".gz "$file"
# rm $file

done

но в случае если файла не было баш создает пустой архив,
странно почему?
...
Рейтинг: 0 / 0
Архивирование логов на bash
    #37265085
shuha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ilik,

Это делается средствами find

man find

http://www.google.com/search?q=find+exec
...
Рейтинг: 0 / 0
Архивирование логов на bash
    #37265255
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
find . -name "*[0-9].log" -exec tar -zcf {}.tar.gz {} \;
...
Рейтинг: 0 / 0
Архивирование логов на bash
    #37265272
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если надо удалять то
find . -name 'wallpaper*' -exec tar --remove -zcf {}.tar.gz {} \;
...
Рейтинг: 0 / 0
Архивирование логов на bash
    #37266229
ilik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денис,

cпасибо большое, тут ламерский вопрос, у меня файлы создаются с названиями типа 2011-05-09_09:55:06.log.tar.gz
при попытке вытащить файл из архива для проверки получаю ошибку tar zxf 2011-03-09_09:55:06.log.tar.gz

tar (child): Cannot connect to 2011-03-09_09: resolve failed

gzip: stdin: unexpected end of file
tar: Child returned status 128
tar: Error is not recoverable: exiting no

Как правильно прописать чтобы ОС поняла знак: и не ругалась пробовал кавычки не получается((
...
Рейтинг: 0 / 0
Архивирование логов на bash
    #37266270
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ilikЖуравлев Денис,

cпасибо большое, тут ламерский вопрос, у меня файлы создаются с названиями типа 2011-05-09_09:55:06.log.tar.gz
при попытке вытащить файл из архива для проверки получаю ошибку tar zxf 2011-03-09_09:55:06.log.tar.gz

tar (child): Cannot connect to 2011-03-09_09: resolve failed

gzip: stdin: unexpected end of file
tar: Child returned status 128
tar: Error is not recoverable: exiting no

Как правильно прописать чтобы ОС поняла знак: и не ругалась пробовал кавычки не получается((
дак это похоже тар так : интерпретирует, попробуйте

cat 2011-03-09_09:55:06.log.tar.gz | tar zxf -
...
Рейтинг: 0 / 0
Архивирование логов на bash
    #37266276
ilik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--force-local помогло))
...
Рейтинг: 0 / 0
Архивирование логов на bash
    #37267000
ilik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денис,

find . -name "*[0-9].log.tar.gz" -exec tar --remove -xzvf {} \;

Теперь пытаюсь вытащить файлы из архива и удалить архив, но почему то не удаляется архив
...
Рейтинг: 0 / 0
Архивирование логов на bash
    #37267224
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ilikЖуравлев Денис,

find . -name "*[0-9].log.tar.gz" -exec tar --remove -xzvf {} \;

Теперь пытаюсь вытащить файлы из архива и удалить архив, но почему то не удаляется архив
Код: plaintext
1.
 --remove-files
              remove files  after adding  them to the archive


find . -name "*[0-9].log.tar.gz" -exec sh -c "tar -xzvf {} && rm {}" \;

или опасный вариант

find . -name "*[0-9].log.tar.gz" -exec tar -xzvf {} \; -exec rm {} \;
...
Рейтинг: 0 / 0
Архивирование логов на bash
    #37268575
ilik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денис,
спасибо большое помогло))
...
Рейтинг: 0 / 0
Архивирование логов на bash
    #37285297
SSukholet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
On Wed, 18 May 2011 18:26:50 +0700, Журавлев Денис <nospam@sql.ru>; wrote:

> Автор: Журавлев Денис
> ilik
> Журавлев Денис,
>
> find . -name "*[0-9].log.tar.gz" -exec tar --remove -xzvf {} \;
>
> Теперь пытаюсь вытащить файлы из архива и удалить архив, но почему то не
> удаляется архив
>
> --remove-files
> remove files after adding them to the archive
>
> find . -name "*[0-9].log.tar.gz" -exec sh -c "tar -xzvf {} && rm {}" \;
>
> или опасный вариант
>
> find . -name "*[0-9].log.tar.gz" -exec tar -xzvf {} \; -exec rm {} \;
у find'a есть же -delete ?

и почему бы не настроить logrotate именно для этого?


--
Остаюсь искренне Ваш,
Станислав Сухолёт
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Архивирование логов на bash
    #37285807
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SSukholet
у find'a есть же -delete ?

упс. Я не знал.
...
Рейтинг: 0 / 0
Архивирование логов на bash
    #37286284
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев ДенисSSukholetу find'a есть же -delete ?

упс. Я не знал.Уж лучше и не знать, учитывая, что -delete (ровно как -exec) find рассматривает как условие (т.е. find . -delete -name "*xxx*" - удалит нифиг все файлы, а не только с названиями, содержащими xxx). -delete проглядеть в начале проще чем -exec rm -rf {} \;
...
Рейтинг: 0 / 0
Архивирование логов на bash
    #37421011
ilik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,

еще вот такой вопрос, запустил shell скрипт в кронтабе

a="1000000" # size in kbytes
b=$(echo - | awk "{print $a/1000}")
c=$(echo - | awk "{print $a/1000000}")
du /var/log/notify-proxy/log.log | while read size filename; do
if [ $size -gt $a ]; then

echo "$filename is greater than $a megabytes or $c gigabytes" >> test.txt

mv log.log `date +"%F_%T"`.log && su -c 'touch log.log' www-data
/etc/init.d/apache2 reload

# make archive
find . -name "*[0-9].log" -exec tar --remove -czvf {}.tar.gz {} \;
echo $(date) archiving isdone >> /var/log/notify-proxy/test.txt

else

echo "$filename is less than $b megabytes or $c gigabytes . Exiting.."

fi



Самое интересно, что скрипт делает запись в файл test.txt, но остальное замена файла и перегрузка апача не выполняются,
но если дернуть скрипт напрямую то он выполнится, в чем причина?
Может отсальные команды выполянть через sudo?
...
Рейтинг: 0 / 0
Архивирование логов на bash
    #37422205
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ilik,

>в чем причина?

Обычно в переменных окружения. Возможно, в правах пользователя. Еще можно почитать отчеты крона, которые приходят на емайл - там обычно сообщается об ошибках.

>Может отсальные команды выполянть через sudo?

Почему нельзя выполнить скрипт от рута целиком?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Архивирование логов на bash
    #37425212
ilik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

разобрался оакзвается в кроне нужно указывать для всех команд полные имена включая имена папок и подпапок, инчае он не может найти файлы)))))
а вручную он запускается потому что как бы запускает скрипт в текущей папке. Или нужно как то в скрипте тот выполнялся в текущей папке
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Архивирование логов на bash
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]