1

Тема: tar xvfz *.tar.gz - розпакування

Усім кому не лінь вислухати мою проблему дуже дякую  *YES*

До діла:

Прихований текст

Є невеличкий сервер в який скидуються кожного дня архівчики формату *.tar.gz
І потрібно їх тако кожного дня розпаковувати, в той же каталог де і сам архів.
Ну як вже відомо по рубриці - на машині Linux-Debian

Так як мені потрібно постійно повторювати дії кожного дня то я заюзав crontab і вивів логи в окремий файл

На виконання я прописав файл з такою командою ( файл лежить там де і самі архіви)

tar xvfz *.tar.gz

Але коли ця команда виконується, то в лог-файл видає

tar (child): *.tar.gz: Функция open завершилась с ошибкой: Нет такого файла или каталога
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now

Я довго морочив голову за цю помилку, але перевіривши її прописавши на виконання просто в консоль терміналу
то ця ж команда без проблем виконалась!
P.S. crontab запускав від root'a, а права на архіви і на папку в цілому 777

2

Re: tar xvfz *.tar.gz - розпакування

наскільки я знаю і можу в цьому помилятись то баш розуміє * як всі фацли чи будь-яке значення, * не можуть розуміти всі програми чи шелл середовища, зазвичай програми при * роблять ітерацію всіх подібних файлів з розширенням, а в crontab розуміється як файл з назвою "зірка"

Подякували: Ostapchuk1

3 Востаннє редагувалося Ostapchuk (30.11.2015 17:32:24)

Re: tar xvfz *.tar.gz - розпакування

reverse2500 написав:

наскільки я знаю і можу в цьому помилятись то баш розуміє * як всі фацли чи будь-яке значення, * не можуть розуміти всі програми чи шелл середовища, зазвичай програми при * роблять ітерацію всіх подібних файлів з розширенням, а в crontab розуміється як файл з назвою "зірка"

Проблема ще в тому, що назви архівів приблизно така

Прихований текст

http://savepic.net/7526530.png

4

Re: tar xvfz *.tar.gz - розпакування

Покажіть запис у кронтабі і шлях, де лежать архіви - проблема скоріше всього в цьому.

Подякували: Ostapchuk1

5

Re: tar xvfz *.tar.gz - розпакування

Ostapchuk написав:

Усім кому не лінь вислухати мою проблему дуже дякую  *YES*

До діла:

Прихований текст

Є невеличкий сервер в який скидуються кожного дня архівчики формату *.tar.gz
І потрібно їх тако кожного дня розпаковувати, в той же каталог де і сам архів.
Ну як вже відомо по рубриці - на машині Linux-Debian

Так як мені потрібно постійно повторювати дії кожного дня то я заюзав crontab і вивів логи в окремий файл

На виконання я прописав файл з такою командою ( файл лежить там де і самі архіви)

tar xvfz *.tar.gz

Але коли ця команда виконується, то в лог-файл видає

tar (child): *.tar.gz: Функция open завершилась с ошибкой: Нет такого файла или каталога
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now

Я довго морочив голову за цю помилку, але перевіривши її прописавши на виконання просто в консоль терміналу
то ця ж команда без проблем виконалась!
P.S. crontab запускав від root'a, а права на архіви і на папку в цілому 777

Зроби наприклад скрипт myscript.sh та поклади його до /usr/local/bin а в crontab пропиши запускати myscript.sh. Має допомогти.

Подякували: Ostapchuk1

6 Востаннє редагувалося Ostapchuk (30.11.2015 19:48:43)

Re: tar xvfz *.tar.gz - розпакування

Master_Sergius написав:

Покажіть запис у кронтабі і шлях, де лежать архіви - проблема скоріше всього в цьому.

Прихований текст

Шлях
http://savepic.net/7504025.png
Крон
http://savepic.net/7510169.png

HetmanNet написав:
Ostapchuk написав:

Усім кому не лінь вислухати мою проблему дуже дякую  *YES*
До діла:

Прихований текст

Є невеличкий сервер в який скидуються кожного дня архівчики формату *.tar.gz
І потрібно їх тако кожного дня розпаковувати, в той же каталог де і сам архів.
Ну як вже відомо по рубриці - на машині Linux-Debian

Так як мені потрібно постійно повторювати дії кожного дня то я заюзав crontab і вивів логи в окремий файл

На виконання я прописав файл з такою командою ( файл лежить там де і самі архіви)

tar xvfz *.tar.gz

Але коли ця команда виконується, то в лог-файл видає

tar (child): *.tar.gz: Функция open завершилась с ошибкой: Нет такого файла или каталога
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now

Я довго морочив голову за цю помилку, але перевіривши її прописавши на виконання просто в консоль терміналу
то ця ж команда без проблем виконалась!
P.S. crontab запускав від root'a, а права на архіви і на папку в цілому 777

Зроби наприклад скрипт myscript.sh та поклади його до /usr/local/bin а в crontab пропиши запускати myscript.sh. Має допомогти.

Тоді мені прийдеться в тілі команди tar прописувати шлях до папки та толку від того /usr/local/bin
Хоча спробую

Подякували: Master_Sergius1

7

Re: tar xvfz *.tar.gz - розпакування

А в якому каталозі cron виконує скрипти? Спробуйте в своєму скрипту вкзати повний абсолютний шлях до файлу або спершу перейти в потрібний каталог командою cd.

Подякували: Master_Sergius, Ostapchuk2

8

Re: tar xvfz *.tar.gz - розпакування

Ну тут дійсно два варіанти - або в команді tar прописати шлях, або в команді крона робити перехід (cd)

Подякували: Ostapchuk1

9 Востаннє редагувалося HetmanNet (01.12.2015 09:16:47)

Re: tar xvfz *.tar.gz - розпакування

Ostapchuk написав:
Master_Sergius написав:

Покажіть запис у кронтабі і шлях, де лежать архіви - проблема скоріше всього в цьому.

Прихований текст

Шлях
http://savepic.net/7504025.png
Крон
http://savepic.net/7510169.png

HetmanNet написав:
Ostapchuk написав:

Усім кому не лінь вислухати мою проблему дуже дякую  *YES*
До діла:

Прихований текст

Є невеличкий сервер в який скидуються кожного дня архівчики формату *.tar.gz
І потрібно їх тако кожного дня розпаковувати, в той же каталог де і сам архів.
Ну як вже відомо по рубриці - на машині Linux-Debian

Так як мені потрібно постійно повторювати дії кожного дня то я заюзав crontab і вивів логи в окремий файл

На виконання я прописав файл з такою командою ( файл лежить там де і самі архіви)

tar xvfz *.tar.gz

Але коли ця команда виконується, то в лог-файл видає

tar (child): *.tar.gz: Функция open завершилась с ошибкой: Нет такого файла или каталога
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now

Я довго морочив голову за цю помилку, але перевіривши її прописавши на виконання просто в консоль терміналу
то ця ж команда без проблем виконалась!
P.S. crontab запускав від root'a, а права на архіви і на папку в цілому 777

Зроби наприклад скрипт myscript.sh та поклади його до /usr/local/bin а в crontab пропиши запускати myscript.sh. Має допомогти.

Тоді мені прийдеться в тілі команди tar прописувати шлях до папки та толку від того /usr/local/bin
Хоча спробую

Можна так:

tar -xfz archive.tar.gz -C /target/directory

Або так:

cd /target/directory
tar -xfz archive.tar.gz
Подякували: Ostapchuk1

10 Востаннє редагувалося reverse2500 (01.12.2015 09:58:08)

Re: tar xvfz *.tar.gz - розпакування

можна зробити перемінну

dir = /usr/home/userOS
tar -xfz $dir/archive.tar.gz

автоматом домашній каталог користувача можна ще позначити так cd ~useros/, якщо виконує кронтаб з root

ще згадав проблему, якщо виконати cd /usr/dir в скрипту, воно виконається, але наступну команду не буде воно виконувати в тому каталозі, в Perl є  chdir, який встановлює каталог для роботи за замовчуванням, а що є такого в bash ? Бо я особисто не сильно в ньому програмую

Подякували: Ostapchuk1

11

Re: tar xvfz *.tar.gz - розпакування

reverse2500 написав:

можна зробити перемінну

dir = /usr/home/userOS
tar -xfz $dir/archive.tar.gz

автоматом домашній каталог користувача можна ще позначити так cd ~useros/, якщо виконує кронтаб з root

ще згадав проблему, якщо виконати cd /usr/dir в скрипту, воно виконається, але наступну команду не буде воно виконувати в тому каталозі, в Perl є  chdir, який встановлює каталог для роботи за замовчуванням, а що є такого в bash ? Бо я особисто не сильно в ньому програмую

Виконує воно у тому каталозі. Перед тим як вам радити я тестував у скрипті, все працює.

Подякували: Ostapchuk1

12

Re: tar xvfz *.tar.gz - розпакування

все працює.

дивно, в мене в bash була така проблема, так у когось працює, а в когось може і ні. Але шо скаже автор теми, хай після cd /dir/dir виведе pwd

Подякували: Ostapchuk1

13

Re: tar xvfz *.tar.gz - розпакування

reverse2500 написав:

все працює.

дивно, в мене в bash була така проблема, так у когось працює, а в когось може і ні. Але шо скаже автор теми, хай після cd /dir/dir виведе pwd

Я перевірив на Fedora, Arch, Red Hat :) Тож у всіх путніх працює.

Подякували: Ostapchuk1

14

Re: tar xvfz *.tar.gz - розпакування

Прихований текст
HetmanNet написав:
Ostapchuk написав:
Master_Sergius написав:

Покажіть запис у кронтабі і шлях, де лежать архіви - проблема скоріше всього в цьому.

Прихований текст

Шлях
http://savepic.net/7504025.png
Крон
http://savepic.net/7510169.png

HetmanNet написав:

Зроби наприклад скрипт myscript.sh та поклади його до /usr/local/bin а в crontab пропиши запускати myscript.sh. Має допомогти.

Тоді мені прийдеться в тілі команди tar прописувати шлях до папки та толку від того /usr/local/bin
Хоча спробую

Можна так:

tar -xfz archive.tar.gz -C /target/directory

Або так:

cd /target/directory
tar -xfz archive.tar.gz

Спробую з вказанням шляху до каталогу, але проблема ще була описана вище, назва архіву міняється і точної назви як архів.tar.gz немає.

15 Востаннє редагувалося HetmanNet (01.12.2015 19:41:01)

Re: tar xvfz *.tar.gz - розпакування

Ostapchuk написав:
Прихований текст
HetmanNet написав:
Ostapchuk написав:
Прихований текст

Шлях
http://savepic.net/7504025.png
Крон
http://savepic.net/7510169.png


Тоді мені прийдеться в тілі команди tar прописувати шлях до папки та толку від того /usr/local/bin
Хоча спробую

Можна так:

tar -xfz archive.tar.gz -C /target/directory

Або так:

cd /target/directory
tar -xfz archive.tar.gz

Спробую з вказанням шляху до каталогу, але проблема ще була описана вище, назва архіву міняється і точної назви як архів.tar.gz немає.

tar можна згодовувати лиш по одному архіву для розпакування, це не unzip, але tar зроблений щоб працювати не лиш з файлами, тому конвеєр в поміч:

cat *.tar.gz | tar -xzvf - -i -C /target/director
Подякували: Ostapchuk1

16

Re: tar xvfz *.tar.gz - розпакування

Ще можна спробувати:

cd /to/path/with/archives && find -name \*.tar.gz -exec tar -xf {} \;
Подякували: HetmanNet1