1

Тема: Розбираюсь з командами linux

Всім доброго часу!
Виникло кілька запитань по використанню команд linux (тільки почав вивчати систему).

Хочу створити бекап розділу, для цього перехожу в потрібний:
cd /home/www/mydir
а потім виконую:
tar -czf archive.tar.gz *
так от, чому запаковується все, крім тих файлів та розділів, що знаходяться в корні цього поточного розділу та ім'я яких починається на крапку? Що я не так роблю, підскажіть будь-ласка?

п.с. Пробував вводити в команді tar замість зірочки і крапку (поточний) і *.* в усіх випадках виникають якісь не точності архівування.
Також можливо було б спочатку зайти на рівень вище: cd /home/www/, а потім вже запустити команду архівування, то в такому випадку проблем з іменами на крапку не виникає, але при цьому, у вихідному файлі, архів буде починатись з зайвого вкладення mydir.

2 Востаннє редагувалося ch0r_t (04.09.2021 22:45:02)

Re: Розбираюсь з командами linux

Якщо отак?

tar -cvzf packed.tar.gz /home/orion/mydir/.

Бо так, «на моїй машині працює.»™

**мав би зберегти пакунок.tar.gz в іншу директорію, бо дотепно якось вийшло...
[orion@laptop temp_fls]$ touch pp.txt
[orion@laptop temp_fls]$ touch '.vgg.txt'
[orion@laptop temp_fls]$ ls -a
.  ..  pp.txt  .vgg.txt
[orion@laptop temp_fls]$ tar -cvzf packed.tar.gz /home/orion/temp_fls/.
tar: Removing leading `/' from member names
/home/orion/temp_fls/./
/home/orion/temp_fls/./packed.tar.gz
/home/orion/temp_fls/./pp.txt
/home/orion/temp_fls/./.vgg.txt
tar: /home/orion/temp_fls/.: file changed as we read it
[orion@laptop temp_fls]$ tar -tvf packed.tar.gz 
drwxr-xr-x orion/orion           0 2021-09-04 23:04 home/orion/temp_fls/./
-rw-r--r-- orion/orion           0 2021-09-04 23:04 home/orion/temp_fls/./packed.tar.gz
-rw-r--r-- orion/orion           0 2021-09-04 23:04 home/orion/temp_fls/./pp.txt
-rw-r--r-- orion/orion           0 2021-09-04 23:04 home/orion/temp_fls/./.vgg.txt

Також можливо було б спочатку зайти на рівень вище: cd /home/www/, а потім вже запустити команду архівування, то в такому випадку проблем з іменами на крапку не виникає, але при цьому, у вихідному файлі, архів буде починатись з зайвого вкладення mydir.

Заждіть ви що хочете за-архівувати контент теки, при цім записуючи результат в неї-ж(так як я ненароком зробив)? Не робіть такого краще. Результат пишіть ліпше в іншу теку а потім перемістіть результат з mv.

Редаг.
Якщо воно вам так і треба то спробуйте додати у виключені теки/файли.

tar --exclude='packet.tar.gz' -cvzf packed.tar.gz /home/orion/temp_fls/.

3

Re: Розбираюсь з командами linux

tchort написав:

Якщо отак?

tar -cvzf packed.tar.gz /home/orion/mydir/.

,,.

Воно так зберігає в архіві всі ці вкладення з підрозділів: /home/orion/mydir/
Цікаво було б запакувати саме кінцевий розділ, тобто щоб він був відразу в корені самого архіву, для чого спершу і заходив командою cd в потрібне місце.

А також із-за крапки вкінці, архі виходить подвійний, тобто додаэться ще один розділ з ім'ям крапка.

4 Востаннє редагувалося dot (04.09.2021 23:01:30)

Re: Розбираюсь з командами linux

Rekomenduju atool dlja robit z arxivamy — unikaljno i prostjice.

Aby obraty snopy, de krapka na potcatku, treba, hadaju, dodaty .* druhym arqumentom. Aby bulo bezpetcnjice, bo ne znaju jak pratsjuje i tcytaje, tobto aby unyknuty . i .., to .??* teg varijant.

5 Востаннє редагувалося ch0r_t (04.09.2021 23:05:24)

Re: Розбираюсь з командами linux

Тут кажуть перемикач -C після імені архіву та додати ім'я теки проекту наприкінці (або крапку, коли взагалі без неї).
https://stackoverflow.com/questions/186 … he-archive

tar -cvzf packed.tar.gz -C /home/orion/temp_fls/. "."

Але маєте тоді позбутися попередньо створеного архіву перед тим, та записувати в інше місце +перемістивши результат в бажане місце коли ви хочете аби бекап лежав в тій же теці що і є цільовою директорією для архіватору.

-Ви це мали на увазі, таке рішення підійде?

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

6

Re: Розбираюсь з командами linux

orion написав:

так от, чому запаковується все, крім тих файлів та розділів, що знаходяться в корні цього поточного розділу та ім'я яких починається на крапку?

Аби заархівувати заховані файли, радять користуватися крапкою (у мене на Debian'і спрацювало):

tar -czf archive.tar.gz .

Значок *, мовяляв, інтерпретується shell'ом і не враховує захованих файлів і директорій. (Однак це можна ввімкнути командою shopt -s dotglob.)

Першу частину питання не зрозумів.

orion написав:

п.с. Пробував вводити в команді tar замість зірочки і крапку (поточний) і *.* в усіх випадках виникають якісь не точності архівування.

Які саме неточності?

Подякували: orion, ch0r_t, leofun013

7

Re: Розбираюсь з командами linux

tchort написав:

Заждіть ви що хочете за-архівувати контент теки, при цім записуючи результат в неї-ж(так як я ненароком зробив)? Не робіть такого краще. Результат пишіть ліпше в іншу теку а потім перемістіть результат з mv.

Запис результата в саму ж теку працює, при умові що кінцевого файла рузультата (тобто з тим же ім'ям) на момент запуску команди tar не існувало. Можете спробувати та переконатись ;)
Та все рівно результат пишу в інше місце, це просто скоротив приклад для наглядності.

8 Востаннє редагувалося ch0r_t (04.09.2021 23:42:43)

Re: Розбираюсь з командами linux

Запис результата в саму ж теку працює, при умові що кінцевого файла рузультата (тобто з тим же ім'ям) на момент запуску команди tar не існувало.

Ні. Принаймні не на моїй машині. Тому я і отримав це у відповідь:

tar: /home/orion/temp_fls/.: file changed as we read it

То що, той перемикач -C спрацював, і все як ви хотіли?

9

Re: Розбираюсь з командами linux

tchort написав:

Тут кажуть перемикач -C після імені архіву та додати ім'я теки проекту наприкінці (або крапку, коли взагалі без неї).
https://stackoverflow.com/questions/186 … he-archive

tar -cvzf packed.tar.gz -C /home/orion/temp_fls/. "."

Але маєте тоді позбутися попередньо створеного архіву перед тим, та записувати в інше місце +перемістивши результат в бажане місце коли ви хочете аби бекап лежав в тій же теці що і є цільовою директорією для архіватору.

-Ви це мали на увазі, таке рішення підійде?

За підсказку дякую з дякую, це позбавило виконувати команду cd для переходу в потрібний розділ
Але проблема з іменами на крапку залишилась.

----------------------------------------------------------------------------------------------

bebyk написав:

у мене на Debian'і спрацювало:

tar -czf archive.tar.gz .

Значок *, мовяляв, інтерпретується shell'ом і не враховує захованих файлів і директорій. (Однак це можна ввімкнути командою shopt -s dotglob.)

Першу частину питання не зрозумів.

orion написав:

п.с. Пробував вводити в команді tar замість зірочки і крапку (поточний) і *.* в усіх випадках виникають якісь не точності архівування.

Які саме неточності?

Так вмене на tar -czf archive.tar.gz . теж спрацьовувало, але що мав на увазі під "неточностями", те що в результуючому архіві буде подвійна копія, тобто всі файли/каталоги плюс каталог з ім'ям крапка, в якому буде теж саме.
Про що мова показав на прінтскрінах:
http://не-дійсний-домен/i9/8b14b3763a55336e27a049294121bccd/1630792284/65519/1440698/images.png

10

Re: Розбираюсь з командами linux

bebyk написав:

Значок *, мовяляв, інтерпретується shell'ом і не враховує захованих файлів і директорій. (Однак це можна ввімкнути командою shopt -s dotglob.)

Щось не можу зрозуміти як це виконати, Це перд таром запускається? Чи який синтаксис?

11 Востаннє редагувалося ch0r_t (05.09.2021 00:10:46)

Re: Розбираюсь з командами linux

Неможливо реплікувати, проблеми на вашій стороні. І я навіть не буду питати про те, очевидне.

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

https://replace.org.ua/uploads/images/10563/7a885c3d8b24791f26637f092f927426.jpg

12

Re: Розбираюсь з командами linux

bebyk написав:

Значок *, мовяляв, інтерпретується shell'ом і не враховує захованих файлів і директорій. (Однак це можна ввімкнути командою shopt -s dotglob.)

Да, це воно!!! Ввожу спершу команду:
shopt -s dotglob
а потім вже:
tar -czf archive.tar.gz *
і в архівному файлі все присутнє навіть з іменами на точку=)
Дякую!

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

13

Re: Розбираюсь з командами linux

По ключу -C (зміна каталогу) не все так просто, працює лише в обмежених випадках.

1. Так працює:
tar -czf /home/archive.tar.gz -C /home/www mydir
Але в такому випадку архів буде починатись з розділу mydir

2. Так працює, але криво:
tar -czf /home/archive.tar.gz -C /home/www/mydir .
бо в кінечному файлі буде подвійний архів (див. прінтскріни пару постів вище)

3. Так не працює:
tar -czf /home/archive.tar.gz -C /home/www/mydir *
Бо якогось біса чомусь чи то не змінює розділ, чи чомусь читає поточний розділ в якому знаходжусь на момент визова команди tar (сужу по файлу menu.sh):
tar: menu.sh: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors

Висновок: все ж спочатку через cd треба змінити розділ на потрібний, а потім вже виконати:
tar -czf /home/archive.tar.gz *
або якщо не критично, то користуватись п.1., до того ж в такому випадку не треба буде попередньо виконувати shopt -s dotglob

14

Re: Розбираюсь з командами linux

Може дурне питання, але хочу заздалегідь перестрахуватись...
Підкажіть будь ласка, якщо буду користуватися архіватором tar -czf ... для бекапів, є обмеження на розмір архіву? (файлова система ext4)
Або якісь ще нюанси? якщо скажімо треба буде бекапити кілька гіговий сайт.
Чи якось треба все ж розбивати на невеликi куски?

15 Востаннє редагувалося ch0r_t (06.09.2021 22:54:41)

Re: Розбираюсь з командами linux

Нічого воно не дурне. Бувають проблеми. В різних форматів свої обмеження.
Немає такого ліміту вочевидь для tar. Навіть, неочікувано для мене, число файлів - "не обмежене".

No tar file size limit under current POSIX.1 2001 revision specifications

https://peazip.github.io/rar-zip-file-f … tions.html
https://www.gnu.org/software/tar/manual … rmats.html

Ну технічно кажучи може й обмежено... в 16 Ексабайт (10737418240.003 Гігабайт).

With increasing demand for larger multimedia and database files, and 32 bit size limitations being removed in modern filesystems revisions, most archive formats specifications switched to 64 bit size variables for filesizes, allowing (theoretically) up to 16 EB (exabyte) -sized files / archives, 8 exabyte for implementation using a signed 64 bit integer, exceeding foreseeable needs of personal and professional users, and exceeding capabilities of most of current operating systems and filesystem standards (or software implementations).

https://replace.org.ua/uploads/images/10563/6dcee96e0b21742d481d007aed2c830f.png

Подякували: orion, leofun012

16 Востаннє редагувалося HetmanNet (07.09.2021 12:34:50)

Re: Розбираюсь з командами linux

tchort написав:

Нічого воно не дурне. Бувають проблеми. В різних форматів свої обмеження.
Немає такого ліміту вочевидь для tar. Навіть, неочікувано для мене, число файлів - "не обмежене".

No tar file size limit under current POSIX.1 2001 revision specifications

https://peazip.github.io/rar-zip-file-f … tions.html
https://www.gnu.org/software/tar/manual … rmats.html

Ну технічно кажучи може й обмежено... в 16 Ексабайт (10737418240.003 Гігабайт).

With increasing demand for larger multimedia and database files, and 32 bit size limitations being removed in modern filesystems revisions, most archive formats specifications switched to 64 bit size variables for filesizes, allowing (theoretically) up to 16 EB (exabyte) -sized files / archives, 8 exabyte for implementation using a signed 64 bit integer, exceeding foreseeable needs of personal and professional users, and exceeding capabilities of most of current operating systems and filesystem standards (or software implementations).

https://replace.org.ua/uploads/images/10563/6dcee96e0b21742d481d007aed2c830f.png

Це теоретичні обмеження, а практичні залежать від реалізації (конкретної версії програми), ресурсів і т.д. Одним словом від того криворукого гімнокодера що писав код. Якщо користуватися останніми версіями архіваторів то зазвичай можна стиснути весь об'єм найбільшого жорсткого диску та не дізнатися про якісь обмеження реалізації.

Подякували: orion, leofun012

17

Re: Розбираюсь з командами linux

orion написав:

Або якісь ще нюанси? якщо скажімо треба буде бекапити кілька гіговий сайт.
Чи якось треба все ж розбивати на невеликi куски?

Великі обсяги бажано розбивати -- з утилітарних причин.

Скажімо ви копіюєте бекап на ваше бекап-сховище. Якщо станеться розрив у мережі, то вам, наприклад, треба буде перекопіювати не 16 ґб, а 4 ґб (як одну з 4 частин).

Гляньте способи.

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