LINUX.ORG.RU

[bash]Мелкий вопрос


0

0

Как архивировать все каталоги в данном, но каждый в свой архив? А то лениво следить за скриптом бекапа, кол-во каталогов может меняться и каждый раз лазить в скрипт лениво.


for i in `find \`pwd\` -maxdepth 1 -type d` ; do tar -cvvzf /archivepath/`basename $i`.tar.gz $i ; done


вот такой вариант получился)

Sylvia ★★★★★ ()
Ответ на: комментарий от RaDiSt

Re: [bash]Мелкий вопрос

Цитируем RaDiSt

tar: abramov: Невозможно stat: Нет такого файла или каталога tar: Выход, отложенный по результатам предыдущих ошибок

$PATH

забыл в скрипт запихнуть, нет?

dhameoelin ★★★★★ ()
Ответ на: комментарий от RaDiSt

там нехватает ; после '$dir.tgz $dir' и он также будет архивировать файлы вместе с каталогами (ls тупо не позволяет вывести лишь каталоги)

однако эта ошибки не выдадут твоего сообщения

wfrr ★★☆ ()
Ответ на: комментарий от wfrr

там нехватает ; после '$dir.tgz $dir'


Непомогло.

он также будет архивировать файлы вместе с каталогами


Понятное дело, но файлов там не будет. Грубо говоря это нужно сделать в /home

$PATH

забыл в скрипт запихнуть, нет?


Вот это не понял.

RaDiSt ()
Ответ на: комментарий от RaDiSt

в общем ты его както криво запускашь

в принципе вместо

for dir in `ls -1 /путь/до/каталога/`; do  

вполне можно писать

for dir in ~/tmp/*; do  

звездочка обязательно

например (только echo надо убрать)

radws% for dir in ~/tmp/*; do echo tar czf $dir.tgz $dir ; done;
tar czf /home/rad/tmp/110_2809.tgz /home/rad/tmp/110_2809
tar czf /home/rad/tmp/akvarium_-_drevnerusskaya_toska.mp3.tgz /home/rad/tmp/akvarium_-_drevnerusskaya_toska.mp3
tar czf /home/rad/tmp/bo.tgz /home/rad/tmp/bo

wfrr ★★☆ ()
Ответ на: комментарий от Sylvia

> for i in `find \`pwd\` -maxdepth 1 -type d` ; do tar -cvvzf /archivepath/`basename $i`.tar.gz $i ; done

for не нужен

find . -type d -maxdepth 1 -exec tar -jvcf {}.tar.bz2 {} \;

ananas ★★★★★ ()
Ответ на: комментарий от ananas

о! for позволяет произвольное количество раз подставлять '{}' !

wfrr ★★☆ ()
Ответ на: комментарий от wfrr

[code]bash$ touch «файл с пробелом»

bash$ for i in ф*; do ls «$i»; done
файл с пробелом

bash$ for i in ф*; do ls $i; done
ls: cannot access файл: No such file or directory
ls: cannot access с: No such file or directory
ls: cannot access пробелом: No such file or directory[/code]

Как это не денется? Ещё как денется. Но, впрочем, тут уже вон с find решение написано давно.

lodin ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.