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

Исходное сообщение
"вывод даты в имени файла"

Отправлено nikolski , 03-Июн-10 15:28 
Доброго времени суток!

Господа, возникла такая проблема, думаю вам не составим труда помочь мне ее решить!

С Линуксом общаюсь не очень плотно и не так давно, но вот появилась необходимость поднять на нем связку сервер 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
спасибо!


Содержание

Сообщения в этом обсуждении
"вывод даты в имени файла"
Отправлено elvenic , 03-Июн-10 15:41 
>DATE='date +%d-%m-%Y'

DATE=`date +%d-%m-%Y`

(back-quotes (`), not normal quotes ('))

Thank you,
  
    elvenic.


"вывод даты в имени файла"
Отправлено серж , 03-Июн-10 16:46 
поправь вот тут:
>#!bin/bash

второе, попробуй посмотреть, что скажет:
#!/bin/bash
DATE='date +%d-%m-%Y'
echo $DATE


"вывод даты в имени файла"
Отправлено nikolski , 04-Июн-10 07:27 
>поправь вот тут:
>>#!bin/bash

это у меня опечатка, в скрипте слэш присутствует

>второе, попробуй посмотреть, что скажет:
>#!/bin/bash
>DATE='date +%d-%m-%Y'
>echo $DATE

пробовал, выдает DATE как строку, то есть date +%d-%m-%Y, так и печатает
понимаю что так быть не должно, а почему так - для меня загадка. может у меня не правильные пчелы и они делают не правильный мед?)


"вывод даты в имени файла"
Отправлено elvenic , 04-Июн-10 07:33 
>[оверквотинг удален]
>>второе, попробуй посмотреть, что скажет:
>>#!/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


"вывод даты в имени файла"
Отправлено elvenic , 04-Июн-10 07:36 
>[оверквотинг удален]
>
>
>$ 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


"вывод даты в имени файла"
Отправлено nikolski , 04-Июн-10 07:41 
прошу прощения, я почему то подумал что нужны как раз прямые, прочитал неверно)
попробовал - заработало!
спасибо всем!)

"вывод даты в имени файла"
Отправлено Linuxforse , 30-Июн-10 23:55 
Благодарю Evlenic , ваш совет помог .

"вывод даты в имени файла"
Отправлено Вова , 03-Июн-10 17:34 
А вы используйте date +%s формат, гораздо удобнее - набор  файлов с именами в таком формате гораздо симпатичнее смотрится, да и сортируется проще.



"вывод даты в имени файла"
Отправлено аноним , 03-Июн-10 18:40 
>А вы используйте date +%s формат, гораздо удобнее - набор  файлов
>с именами в таком формате гораздо симпатичнее смотрится,

Это - для роботов. Людям - неудобно.

>да и сортируется проще.

Умные люди в ISO 100500 лет как рекомендуют YYYYMMDD котрый сортируется правильно хоть в виде цифр, хоть в виде строк и людьми аонимается влёт.


"вывод даты в имени файла"
Отправлено Andrey Mitrofanov , 04-Июн-10 09:06 
>Это - для роботов. Людям - неудобно.

+1

>>да и сортируется проще.
>Умные люди в ISO 100500 лет как рекомендуют YYYYMMDD котрый сортируется правильно

Для сортировки и чтения date +%F\ %T удобен, для имён файлов, м.б. " " и ":" стоит заменить на что попроще.


"вывод даты в имени файла"
Отправлено Вова , 04-Июн-10 09:31 

>>Умные люди в ISO 100500 лет как рекомендуют YYYYMMDD котрый сортируется правильно
>
>Для сортировки и чтения date +%F\ %T удобен, для имён файлов, м.б.
>" " и ":" стоит заменить на что попроще.

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


"вывод даты в имени файла"
Отправлено Andrey Mitrofanov , 04-Июн-10 09:55 
>
>>>Умные люди в ISO 100500 лет как рекомендуют YYYYMMDD котрый сортируется правильно
>>
>>Для сортировки и чтения date +%F\ %T удобен, для имён файлов, м.б.
>>" " и ":" стоит заменить на что попроще.
>
>из таймстемпа можно быстро

Какой ты нудный. По сортировке в составе имени файла - одинаково. По удобству чтения - субъективно и, да, сгибальщики среди нас.

>получить любой формат;

На кой оно -- из имени файла бэкапа? Эжедневно печатать даректорию /var/lib/backup _разными красивыми шрифтами, перевязывать ленточкой и носить главбуху на подпись?~~~

Итого: никакой разницы, кроме персональных передпочтений. -- Продолжай, пожалуйста!


"вывод даты в имени файла"
Отправлено Вова , 04-Июн-10 09:28 
>>А вы используйте date +%s формат, гораздо удобнее - набор  файлов
>>с именами в таком формате гораздо симпатичнее смотрится,
>
>Это - для роботов. Людям - неудобно.
>
>>да и сортируется проще.
>
>Умные люди в ISO 100500 лет как рекомендуют YYYYMMDD котрый сортируется правильно
>хоть в виде цифр, хоть в виде строк и людьми аонимается
>влёт.

Нет, юникс-таймстемпом удобнее, видимо от задач зависит.


"вывод даты в имени файла"
Отправлено аноним , 04-Июн-10 21:32 
>>Это - для роботов. Людям - неудобно.
>>Умные люди в ISO 100500 лет как рекомендуют YYYYMMDD котрый сортируется правильно
>Нет, юникс-таймстемпом удобнее, видимо от задач зависит.

Мы говорим о имени бэкап файла не так ли? Ну и ? ....
А то следуя твоей логике можно дойти до того, что имя тоже не нужно, есть же inode - че моск парить.

А ещё представилось какая начнётся шурша после невинного запроса от финика: "а ну ко восстанови мне базы на состояние позапрошлого четверга" ...
Мне - сказать cal, лукапнуть какое число, найти файл.
Тебе ?

Мораль: нехрен работу железяки самому делать, для того железяки и придумывались :)


"вывод даты в имени файла"
Отправлено Вова , 05-Июн-10 14:21 
>А ещё представилось какая начнётся шурша после невинного запроса от финика: "а
>ну ко восстанови мне базы на состояние позапрошлого четверга" ...
>Мне - сказать cal, лукапнуть какое число, найти файл.
>Тебе ?

  cal + ls



"вывод даты в имени файла"
Отправлено Ph.D. , 05-Июн-10 23:53 
>>А ещё представилось какая начнётся шурша после невинного запроса от финика: "а
>>ну ко восстанови мне базы на состояние позапрошлого четверга" ...
>>Мне - сказать cal, лукапнуть какое число, найти файл.
>>Тебе ?
>
>  cal + ls

Дык ты сгибальшик? Так бы сразу и сказал! :)

А людям: cal + lookup + date_conv.sh -i humandate -o TS + ls ...
Вот и я говорю - устарели мы, белковые .... :)



"вывод даты в имени файла"
Отправлено Вова , 06-Июн-10 10:22 
>[оверквотинг удален]
>>>Мне - сказать cal, лукапнуть какое число, найти файл.
>>>Тебе ?
>>
>>  cal + ls
>
>Дык ты сгибальшик? Так бы сразу и сказал! :)
>
>А людям: cal + lookup + date_conv.sh -i humandate -o TS +
>ls ...
>Вот и я говорю - устарели мы, белковые .... :)

товарищ кандидат. То, что советую я - это по опыту. То, что пишете вы - это от наивных представлений. По факту у нас делали изначально ротацию именно в формате .YYMMDD. Не постоянно, но возникали предложения, были вопросы, претензии, требования рационализаторства типа указания зоны и тп. Сделали .таймстемп - вопрос тупо никем не обсуждается.
Двигай науку, двигай.


"вывод даты в имени файла"
Отправлено Ph.D. , 08-Июн-10 07:39 
>>[оверквотинг удален]

...
>тп. Сделали .таймстемп - вопрос тупо никем не обсуждается.

Дык боятся! Вон просили малость какую, а им нате таймстэмпом :)

> Двигай науку, двигай.

А у науки есть такой и подход:
Всё надо делать просто, как можно более просто, но не проще!
Кто сказал знаешь? :)

Конкретно в ваших условиях (о которых ты как хороший партизан молчал) - раз у вас по всем часовым поясам бэкапы деются, а хранятся централизованно и используется (предполагаю) POSIX-образное ... то вот мой опыт подсказывает что можно слепить YYYYMMDDThhmmss для людей, и если уж так вперлось - линк в виде таймстэмпа - для сгибальшиков :)

На то и Unix - самая гибкая система чтоб вязать снопы и "to make all happy" :)

PS: Почти не шучу ...