|
|
|
Архивирование логов на bash
|
|||
|---|---|---|---|
|
#18+
Народ привет. Помогите плз: нужно сархивировать на bash файлы в папке по заданному критерию, чтобы для каждого файла был создан отдельный архив. Вот что я попробовал сделать, выводит просто названия файлов но ничего с ними не делает. Попробовал сделать через массив то же самое. Прошу помочь и не судите строго)) myfile= find ./* -name "*[0-9].log" for x in $myfile do #echo $x && tar czvf $x.tar.gz --force-local $x echo done ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2011, 14:21 |
|
||
|
Архивирование логов на bash
|
|||
|---|---|---|---|
|
#18+
изменил на for file in *[0-9].log do echo "file=$file" tar czvf "$file".gz "$file" # rm $file done но в случае если файла не было баш создает пустой архив, странно почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2011, 15:26 |
|
||
|
Архивирование логов на bash
|
|||
|---|---|---|---|
|
#18+
find . -name "*[0-9].log" -exec tar -zcf {}.tar.gz {} \; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2011, 17:00 |
|
||
|
Архивирование логов на bash
|
|||
|---|---|---|---|
|
#18+
если надо удалять то find . -name 'wallpaper*' -exec tar --remove -zcf {}.tar.gz {} \; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2011, 17:03 |
|
||
|
Архивирование логов на bash
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис, 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 Как правильно прописать чтобы ОС поняла знак: и не ругалась пробовал кавычки не получается(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2011, 07:39 |
|
||
|
Архивирование логов на bash
|
|||
|---|---|---|---|
|
#18+
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 - ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2011, 08:29 |
|
||
|
Архивирование логов на bash
|
|||
|---|---|---|---|
|
#18+
--force-local помогло)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2011, 08:33 |
|
||
|
Архивирование логов на bash
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис, find . -name "*[0-9].log.tar.gz" -exec tar --remove -xzvf {} \; Теперь пытаюсь вытащить файлы из архива и удалить архив, но почему то не удаляется архив ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2011, 13:04 |
|
||
|
Архивирование логов на bash
|
|||
|---|---|---|---|
|
#18+
ilikЖуравлев Денис, find . -name "*[0-9].log.tar.gz" -exec tar --remove -xzvf {} \; Теперь пытаюсь вытащить файлы из архива и удалить архив, но почему то не удаляется архив Код: plaintext 1. 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 {} \; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2011, 14:26 |
|
||
|
Архивирование логов на bash
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис, спасибо большое помогло)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2011, 07:33 |
|
||
|
Архивирование логов на bash
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2011, 13:21 |
|
||
|
Архивирование логов на bash
|
|||
|---|---|---|---|
|
#18+
SSukholet у find'a есть же -delete ? упс. Я не знал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2011, 16:39 |
|
||
|
Архивирование логов на bash
|
|||
|---|---|---|---|
|
#18+
Журавлев ДенисSSukholetу find'a есть же -delete ? упс. Я не знал.Уж лучше и не знать, учитывая, что -delete (ровно как -exec) find рассматривает как условие (т.е. find . -delete -name "*xxx*" - удалит нифиг все файлы, а не только с названиями, содержащими xxx). -delete проглядеть в начале проще чем -exec rm -rf {} \; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2011, 20:58 |
|
||
|
Архивирование логов на bash
|
|||
|---|---|---|---|
|
#18+
Андрей Панфилов, еще вот такой вопрос, запустил 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? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2011, 13:44 |
|
||
|
Архивирование логов на bash
|
|||
|---|---|---|---|
|
#18+
ilik, >в чем причина? Обычно в переменных окружения. Возможно, в правах пользователя. Еще можно почитать отчеты крона, которые приходят на емайл - там обычно сообщается об ошибках. >Может отсальные команды выполянть через sudo? Почему нельзя выполнить скрипт от рута целиком? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2011, 07:33 |
|
||
|
Архивирование логов на bash
|
|||
|---|---|---|---|
|
#18+
vkle, разобрался оакзвается в кроне нужно указывать для всех команд полные имена включая имена папок и подпапок, инчае он не может найти файлы))))) а вручную он запускается потому что как бы запускает скрипт в текущей папке. Или нужно как то в скрипте тот выполнялся в текущей папке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2011, 13:08 |
|
||
|
|

start [/forum/topic.php?fid=25&msg=37266276&tid=1484037]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
433ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 728ms |

| 0 / 0 |
