URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7849
[ Назад ]

Исходное сообщение
"абсолютный tar"

Отправлено GHopper , 23-Янв-09 08:08 
Здравствуйте!

Нужно заархивировать файлы по абсолютному пути, но так, чтобы эти файлы оказались в корне архива.


tar -czPf /backup/bakup.tar.gz /path/to/files/*.cpp

Такая команда работает, но в архив переноситсяструктура /path/to/files/*.cpp. Как этого избежать?

Содержание

Сообщения в этом обсуждении
"абсолютный tar"
Отправлено Pahanivo , 23-Янв-09 08:34 
>Здравствуйте!
>
>Нужно заархивировать файлы по абсолютному пути, но так, чтобы эти файлы оказались
>в корне архива.
>
 
>tar -czPf /backup/bakup.tar.gz /path/to/files/*.cpp
>

>Такая команда работает, но в архив переноситсяструктура /path/to/files/*.cpp. Как этого избежать?

maybe man tar?


"абсолютный tar"
Отправлено GHopper , 23-Янв-09 08:39 
>>Здравствуйте!
>>
>>Нужно заархивировать файлы по абсолютному пути, но так, чтобы эти файлы оказались
>>в корне архива.
>>
 
>>tar -czPf /backup/bakup.tar.gz /path/to/files/*.cpp
>>

>>Такая команда работает, но в архив переноситсяструктура /path/to/files/*.cpp. Как этого избежать?
>
>maybe man tar?

С этого все началось... и привело на этот форум. Не осилил.


"абсолютный tar"
Отправлено NuINu , 23-Янв-09 10:27 
>Здравствуйте!
>
>Нужно заархивировать файлы по абсолютному пути, но так, чтобы эти файлы оказались
>в корне архива.
>
 
>tar -czPf /backup/bakup.tar.gz /path/to/files/*.cpp
>

>Такая команда работает, но в архив переноситсяструктура /path/to/files/*.cpp. Как этого избежать?

Нужно изменить имя файла помещаемого в архив, например
шаблон /path/to/files/*.cpp расскрывается шелом

пример:

tar -cz  --transform="s/home\/nuinu\/work\/util\/samba\///" -f test3.tar.gz /home/misha/work/nuinu/samba/*.au


"абсолютный tar"
Отправлено mikra , 23-Янв-09 11:50 
>Здравствуйте!
>
>Нужно заархивировать файлы по абсолютному пути, но так, чтобы эти файлы оказались
>в корне архива.
>
 
>tar -czPf /backup/bakup.tar.gz /path/to/files/*.cpp
>

>Такая команда работает, но в архив переноситсяструктура /path/to/files/*.cpp. Как этого избежать?

Можно просто
cd /path/to/files && tar -czPf /backup/bakup.tar.gz ./*.cpp


"абсолютный tar"
Отправлено GHopper , 23-Янв-09 12:10 
нельзя юзать cd, а ключа --transform в моей версии нету (


# uname -sor
Linux 2.6.19-gentoo-r5 GNU/Linux


"абсолютный tar"
Отправлено NuINu , 23-Янв-09 12:43 
>нельзя юзать cd, а ключа --transform в моей версии нету (
>
>
 
># uname -sor
>Linux 2.6.19-gentoo-r5 GNU/Linux
>

tar --version ???


"абсолютный tar"
Отправлено mikra , 23-Янв-09 13:08 
>нельзя юзать cd

Просто любопытно. А почему?


"а теперь мальчик с феномеенальной памятью..."
Отправлено Andrey Mitrofanov , 23-Янв-09 13:17 
+1 к предыдущим ораторам

>нельзя юзать cd,

Ты нам типа постепенно создаёшь трудности, чтобы мы их, твои трудности, преодолевали? Ты нам Злобный Буратино?!

Сделай временную директорию, все фалы - симлинками в (с дублированием имён -- сам как-нибудь: сам создал себе дурацкую задачу -- сам и получай удовольствие), cd в неё (почему, нельзя cd-то?? ну, суб-шел сделай или скрипт-обёртку), и tar с ключём (он-то есть?) h.

>а ключа --transform в моей версии нету

Какой ты нудный! "Обнови" tar, поставь GNU tar... Как оно "у вас там"?... 8-O "Порты обновить"? "Обнови" постановку задачи?? Поищи программера?


"гм, freebsd-way?.."
Отправлено Andrey Mitrofanov , 23-Янв-09 13:22 
>ключа --transform в моей версии нету
>Linux 2.6.19-gentoo-r5

gtar ??!!

>GNU/Linux

Что удивиельно...


"гм, freebsd-way?.."
Отправлено GHopper , 23-Янв-09 13:30 

# tar --version
tar (GNU tar) 1.14
Copyright (C) 2004 Free Software Foundation, Inc.
This program comes with NO WARRANTY, to the extent permitted by law.
You may redistribute it under the terms of the GNU General Public License;
see the file named COPYING for details.
Written by John Gilmore and Jay Fenlason.

cd использовать нельзя, т.к. собираюсь использовать этот код внутри чужого. Всю логику последнего не понял, поэтому боюсь ошибок.

Трудности я не создаю, просто хочу создать архив и добавить в него нужные мне файлы.


"гм, freebsd-way?.."
Отправлено madskull , 23-Янв-09 13:47 

>cd использовать нельзя, т.к. собираюсь использовать этот код внутри чужого. Всю логику
>последнего не понял, поэтому боюсь ошибок.

Ну, тогда pushd/popd.
Или субшелл, как было уже озвучено.


"гм, freebsd-way?.."
Отправлено mikra , 23-Янв-09 13:51 
>cd использовать нельзя, т.к. собираюсь использовать этот код внутри чужого. Всю логику
>последнего не понял, поэтому боюсь ошибок.
>
>Трудности я не создаю, просто хочу создать архив и добавить в него
>нужные мне файлы.

тю... разьве это проблема?
variablekotoroinetvkode2=`pwd` && cd /path/to/files && tar -czPf /backup/bakup.tar.gz ./*.cpp ; cd $variablekotoroinetvkode2

Зачем искать сложные пути


"гм, freebsd-way?.."
Отправлено GHopper , 23-Янв-09 14:38 
>[оверквотинг удален]
>>последнего не понял, поэтому боюсь ошибок.
>>
>>Трудности я не создаю, просто хочу создать архив и добавить в него
>>нужные мне файлы.
>
>тю... разьве это проблема?
>variablekotoroinetvkode2=`pwd` && cd /path/to/files && tar -czPf /backup/bakup.tar.gz ./*.cpp ; cd $variablekotoroinetvkode2
>
>
>Зачем искать сложные пути

уже так и сделал. Сразу не сообразил, но после ваших ответов доперло. Всем спасибо.


"гм, freebsd-way?.."
Отправлено madskull , 23-Янв-09 14:58 
>>тю... разьве это проблема?
>>variablekotoroinetvkode2=`pwd` && cd /path/to/files && tar -czPf /backup/bakup.tar.gz ./*.cpp ; cd $variablekotoroinetvkode2
>>
>
>уже так и сделал. Сразу не сообразил, но после ваших ответов доперло.

И все-таки pushd/popd ...

Хрен ли думать - все давно придумано! (Хазанов)


"развели тут ;-)"
Отправлено Andrey Mitrofanov , 23-Янв-09 15:14 
>И все-таки pushd/popd ...

push-pop не нужен. :) (И суб-шел. И =`pwd`. ...и да, "проверено в /bin/sh". :/ )

$ pwd; cd /usr/share/doc/dpkg/; echo $PWD; cd - >/dev/null; pwd
/
/usr/share/doc/dpkg
/
$ _

>Хрен ли думать - все давно придумано! (Хазанов)

Причём придумано гораздо больше, чем... :-D без поллитры разберёшься.

PS: Разведка доложила, что --transform-чего-там появился в версии 1.16 GNU tar-а (и её бетах - 1.15.90+).


"метод с суб-шелом"
Отправлено Andrey Mitrofanov , 23-Янв-09 14:41 
>тю... разьве это проблема?
>variablekotoroinetvkode2=`pwd` && cd /path/to/files && tar -czPf /backup/bakup.tar.gz ./*.cpp ; cd $variablekotoroinetvkode2

$ pwd; (cd wrk/; pwd ); pwd
/home/abm
/home/abm/wrk
/home/abm
$ _

>Зачем искать сложные пути

Та шо Вы говорите? ;)


"метод с суб-шелом"
Отправлено mikra , 23-Янв-09 15:05 
>[оверквотинг удален]
>
>$ pwd; (cd wrk/; pwd ); pwd
>/home/abm
>/home/abm/wrk
>/home/abm
>$ _
>
>>Зачем искать сложные пути
>
>Та шо Вы говорите? ;)

Если новым условием будет отсутствие pwd, то субшел тут бесспорно лучшее решение :)))
А так дело вкуса. Кому-то так понятнее читать, кому-то эдак. Ведь нельзя же исключить, что в код когда-нибудь придется лезть снова :)


"метод с суб-шелом"
Отправлено prohozii , 23-Янв-09 17:24 
a tak
tar -czf /backup/bakup.tar.gz -C / path/to/files/*.cpp

"метод с суб-шелом"
Отправлено Vladin , 23-Янв-09 17:57 
вариант хороший, но с ошибкой

tar -czf /backup/bakup.tar.gz -C /path/to/files /path/to/files/*.cpp

Ключ -C меняет текущую директорию на время выполнения тара
и не надо морочиться с сохранением директории


"метод с суб-шелом"
Отправлено GHopper , 23-Янв-09 19:42 
>вариант хороший, но с ошибкой
>
>tar -czf /backup/bakup.tar.gz -C /path/to/files /path/to/files/*.cpp
>
>Ключ -C меняет текущую директорию на время выполнения тара
>и не надо морочиться с сохранением директории


# tar -czf del.tar.gz -C `pwd` `pwd`/*.cpp
tar: Removing leading `/' from member names


"метод с суб-шелом"
Отправлено headroot , 24-Июн-09 12:13 
>[оверквотинг удален]
>>
>>tar -czf /backup/bakup.tar.gz -C /path/to/files /path/to/files/*.cpp
>>
>>Ключ -C меняет текущую директорию на время выполнения тара
>>и не надо морочиться с сохранением директории
>
>
 
># tar -czf del.tar.gz -C `pwd` `pwd`/*.cpp
>tar: Removing leading `/' from member names
>

И снова ошибка правильно так:

 
# tar -czf del.tar.gz -C `pwd` *.cpp

...)))