Доброго времени суток!Господа, возникла такая проблема, думаю вам не составим труда помочь мне ее решить!
С Линуксом общаюсь не очень плотно и не так давно, но вот появилась необходимость поднять на нем связку сервер 1С + Постгрес. За пару дней таки смог это сделать и теперь появилась необходимость делать резервное копирование базы. С кроном вроде бы разобрался, но есть кое-какая проблемка в написании скрипта. Хочется на выходе получать файл вида имябазы-текущаядата, а в скриптовом языке я не силен. Наваял я следующее:
#!bin/bash
DATE='date +%d-%m-%Y'
echo Running database backup
pg_dump -U postgres u8 | gzip > /u8backup/union-$DATE.dump.gz
echo Backup complete!на что системы мне пишет что на 4ой строке "неоднозначенное перенаправление" (ambiguous redirect)
пробовал вариант
pg_dump -U postgres u8 | gzip > /u8backup/union-'date +%d-%m-%Y'.dump.gz, но на выходе получаю имяфайла /u8backup/union-date +%d-%m-%Y.dump.gz
честно-таки говоря не особо понимаю в скриптовом языке, а сделать надо, и притом срочно
подскажите пожалуйста, как и что тут переписать :)если важно, то используется CentOS 5.4, x64
спасибо!
>DATE='date +%d-%m-%Y'DATE=`date +%d-%m-%Y`
(back-quotes (`), not normal quotes ('))
Thank you,
elvenic.
поправь вот тут:
>#!bin/bashвторое, попробуй посмотреть, что скажет:
#!/bin/bash
DATE='date +%d-%m-%Y'
echo $DATE
>поправь вот тут:
>>#!bin/bashэто у меня опечатка, в скрипте слэш присутствует
>второе, попробуй посмотреть, что скажет:
>#!/bin/bash
>DATE='date +%d-%m-%Y'
>echo $DATEпробовал, выдает DATE как строку, то есть date +%d-%m-%Y, так и печатает
понимаю что так быть не должно, а почему так - для меня загадка. может у меня не правильные пчелы и они делают не правильный мед?)
>[оверквотинг удален]
>>второе, попробуй посмотреть, что скажет:
>>#!/bin/bash
>>DATE='date +%d-%m-%Y'
>>echo $DATE
>
>пробовал, выдает DATE как строку, то есть date +%d-%m-%Y, так и печатает
>
>понимаю что так быть не должно, а почему так - для меня
>загадка. может у меня не правильные пчелы и они делают не
>правильный мед?)Ну я же уже сказал: вместо прямых кавычек (') нужно обратные (`)
$ DATE='date +%d-%m-%Y'
$ echo $DATE
date +%d-%m-%Y
$ DATE=`date +%d-%m-%Y`
$ echo $DATE
03-06-2010
>[оверквотинг удален]
>
>
>$ DATE='date +%d-%m-%Y'
>$ echo $DATE
>date +%d-%m-%Y
>
>
>$ DATE=`date +%d-%m-%Y`
>$ echo $DATE
>03-06-2010Или еще вариант:
$ DATE=$(date +%d-%m-%Y)
$ echo $DATE
03-06-2010
прошу прощения, я почему то подумал что нужны как раз прямые, прочитал неверно)
попробовал - заработало!
спасибо всем!)
Благодарю Evlenic , ваш совет помог .
А вы используйте date +%s формат, гораздо удобнее - набор файлов с именами в таком формате гораздо симпатичнее смотрится, да и сортируется проще.
>А вы используйте date +%s формат, гораздо удобнее - набор файлов
>с именами в таком формате гораздо симпатичнее смотрится,Это - для роботов. Людям - неудобно.
>да и сортируется проще.
Умные люди в ISO 100500 лет как рекомендуют YYYYMMDD котрый сортируется правильно хоть в виде цифр, хоть в виде строк и людьми аонимается влёт.
>Это - для роботов. Людям - неудобно.+1
>>да и сортируется проще.
>Умные люди в ISO 100500 лет как рекомендуют YYYYMMDD котрый сортируется правильноДля сортировки и чтения date +%F\ %T удобен, для имён файлов, м.б. " " и ":" стоит заменить на что попроще.
>>Умные люди в ISO 100500 лет как рекомендуют YYYYMMDD котрый сортируется правильно
>
>Для сортировки и чтения date +%F\ %T удобен, для имён файлов, м.б.
>" " и ":" стоит заменить на что попроще.из таймстемпа можно быстро получить любой формат; в отличие от ваших вариантов - вначале в таймстемп, потом в формат.
>
>>>Умные люди в ISO 100500 лет как рекомендуют YYYYMMDD котрый сортируется правильно
>>
>>Для сортировки и чтения date +%F\ %T удобен, для имён файлов, м.б.
>>" " и ":" стоит заменить на что попроще.
>
>из таймстемпа можно быстроКакой ты нудный. По сортировке в составе имени файла - одинаково. По удобству чтения - субъективно и, да, сгибальщики среди нас.
>получить любой формат;
На кой оно -- из имени файла бэкапа? Эжедневно печатать даректорию /var/lib/backup _разными красивыми шрифтами, перевязывать ленточкой и носить главбуху на подпись?~~~
Итого: никакой разницы, кроме персональных передпочтений. -- Продолжай, пожалуйста!
>>А вы используйте date +%s формат, гораздо удобнее - набор файлов
>>с именами в таком формате гораздо симпатичнее смотрится,
>
>Это - для роботов. Людям - неудобно.
>
>>да и сортируется проще.
>
>Умные люди в ISO 100500 лет как рекомендуют YYYYMMDD котрый сортируется правильно
>хоть в виде цифр, хоть в виде строк и людьми аонимается
>влёт.Нет, юникс-таймстемпом удобнее, видимо от задач зависит.
>>Это - для роботов. Людям - неудобно.
>>Умные люди в ISO 100500 лет как рекомендуют YYYYMMDD котрый сортируется правильно
>Нет, юникс-таймстемпом удобнее, видимо от задач зависит.Мы говорим о имени бэкап файла не так ли? Ну и ? ....
А то следуя твоей логике можно дойти до того, что имя тоже не нужно, есть же inode - че моск парить.А ещё представилось какая начнётся шурша после невинного запроса от финика: "а ну ко восстанови мне базы на состояние позапрошлого четверга" ...
Мне - сказать cal, лукапнуть какое число, найти файл.
Тебе ?Мораль: нехрен работу железяки самому делать, для того железяки и придумывались :)
>А ещё представилось какая начнётся шурша после невинного запроса от финика: "а
>ну ко восстанови мне базы на состояние позапрошлого четверга" ...
>Мне - сказать cal, лукапнуть какое число, найти файл.
>Тебе ?cal + ls
>>А ещё представилось какая начнётся шурша после невинного запроса от финика: "а
>>ну ко восстанови мне базы на состояние позапрошлого четверга" ...
>>Мне - сказать cal, лукапнуть какое число, найти файл.
>>Тебе ?
>
> cal + lsДык ты сгибальшик? Так бы сразу и сказал! :)
А людям: cal + lookup + date_conv.sh -i humandate -o TS + ls ...
Вот и я говорю - устарели мы, белковые .... :)
>[оверквотинг удален]
>>>Мне - сказать cal, лукапнуть какое число, найти файл.
>>>Тебе ?
>>
>> cal + ls
>
>Дык ты сгибальшик? Так бы сразу и сказал! :)
>
>А людям: cal + lookup + date_conv.sh -i humandate -o TS +
>ls ...
>Вот и я говорю - устарели мы, белковые .... :)товарищ кандидат. То, что советую я - это по опыту. То, что пишете вы - это от наивных представлений. По факту у нас делали изначально ротацию именно в формате .YYMMDD. Не постоянно, но возникали предложения, были вопросы, претензии, требования рационализаторства типа указания зоны и тп. Сделали .таймстемп - вопрос тупо никем не обсуждается.
Двигай науку, двигай.
>>[оверквотинг удален]...
>тп. Сделали .таймстемп - вопрос тупо никем не обсуждается.Дык боятся! Вон просили малость какую, а им нате таймстэмпом :)
> Двигай науку, двигай.
А у науки есть такой и подход:
Всё надо делать просто, как можно более просто, но не проще!
Кто сказал знаешь? :)Конкретно в ваших условиях (о которых ты как хороший партизан молчал) - раз у вас по всем часовым поясам бэкапы деются, а хранятся централизованно и используется (предполагаю) POSIX-образное ... то вот мой опыт подсказывает что можно слепить YYYYMMDDThhmmss для людей, и если уж так вперлось - линк в виде таймстэмпа - для сгибальшиков :)
На то и Unix - самая гибкая система чтоб вязать снопы и "to make all happy" :)
PS: Почти не шучу ...