Страница 1 из 2

Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-20 9:51:11
alex117
Вроде простая задача, а бьюсь уже долго. Есть скрипт резервного копирования вида:

Код: Выделить всё

#!/bin/sh
NAME=project
DIRECTORIES="/transfer/ПРОЕКТЫ"
BACKUPDIR="/backup/archive/проекты"
TAR=/bin/tar
PATH=/usr/local/bin:/usr/bin:/bin
NEWER=""
$TAR $NEWER -cf $BACKUPDIR/$NAME-'date +%d-%a-%R'.tar $DIRECTORIES
При выполнении создается архив с именем project-date +%d-%a-%R.tar, т.е подстановка не происходит.
Может где в синтаксисе ошибка?
Система OpenSuse-11.2

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-20 9:54:26
ршуяд

Код: Выделить всё

echo 'date +%d-%a-%R'

Код: Выделить всё

echo `date +%d-%a-%R`

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-20 12:02:25
alex117
Так как по синтаксису правильно echo ставить?

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-20 13:23:57
Neus
$TAR $NEWER -cf $BACKUPDIR/$NAME-`date +%d-%a-%R`.tar $DIRECTORIES

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-20 13:43:46
alex117
$TAR $NEWER -cf $BACKUPDIR/$NAME-`date +%d-%a-%R`.tar $DIRECTORIES
В итоге имя файла принимает вид PAKKXA~T.TAR.

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-20 14:05:58
Neus
ну попробуй так

Код: Выделить всё

DATA=`date +%d-%a-%R`
$TAR $NEWER -cf $BACKUPDIR/$NAME-$DATA.tar $DIRECTORIES

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-20 14:15:47
Neus

Код: Выделить всё

#!/bin/sh

DATA=data-`date +%d-%a-%R`
echo $DATA.tar

Код: Выделить всё

sh test.sh
data-20-Thu-15:15.tar
как бы работает

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-20 14:20:33
gumeniuc
как-то так попробуйте

Код: Выделить всё

$TAR $NEWER -cf $BACKUPDIR/$NAME-$(date +%d-%a-%R).tar $DIRECTORIES

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-20 14:52:59
alex117
С обоими способами получается та же фигня, в смысле имени архива.

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-20 14:56:30
hizel
УМВР

Код: Выделить всё

hizel@wnight:~$ sh 1.sh 
project-20-Thu-15:54.tar

Код: Выделить всё

hizel@wnight:~$ cat 1.sh 
#!/bin/sh

NAME=project

echo $NAME-`date +%d-%a-%R`.tar

судя по названию файла воняет или виндовз или ее файловыми системами

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-20 15:30:15
alex117
судя по названию файла воняет или виндовз или ее файловыми системами
Нет, файловый сервер на OpenSuse с ext3-разделом.

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-20 16:09:40
gumeniuc
так работает. а у вас что в итоге получается ?

Код: Выделить всё

cat 1.sh
#!/bin/sh

touch $(date +%d-%a-%R).txt

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-20 18:17:56
alex117
Да получается что-то вида

Код: Выделить всё

PAKKXA~T.TAR.
С различными вариациями букв и символов.
Просто в консоли

Код: Выделить всё

date +%d-%a-%R
Все срабатывает нормально.

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-20 19:08:08
FiL
alex117 писал(а):
судя по названию файла воняет или виндовз или ее файловыми системами
Нет, файловый сервер на OpenSuse с ext3-разделом.
И бакап тоже лежит на ext3?

Но вообще скажите, пожалуйста что у Вас конкретно вот этот скрипт выдает -

Код: Выделить всё

hizel@wnight:~$ cat 1.sh 
#!/bin/sh

NAME=project

echo $NAME-`date +%d-%a-%R`.tar

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-21 7:46:04
alex117
И бакап тоже лежит на ext3?
да.

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-21 14:40:47
alex117
Но вообще скажите, пожалуйста что у Вас конкретно вот этот скрипт выдает -

Код: Выделить всё
hizel@wnight:~$ cat 1.sh
#!/bin/sh

NAME=project

echo $NAME-`date +%d-%a-%R`.tar
Так все нормально

Код: Выделить всё

project-21-Птн-15:38.tar
Но это с "echo", а вот с "tar" ничего не выходит
P.S: Мне в принципе уже это не надо, но просто на будущее интересно, где косяк.

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-21 15:06:56
Neus
а если использовать цифры
$NAME-`date "+%Y%m%d_%H%M"`.tar

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-21 15:15:52
bagas

Код: Выделить всё

#!/bin/sh
DT=`date +"%d-%m-%Y"`
touch /home/bagas/$DT.txt

Код: Выделить всё

# la -l /home/bagas/ | grep txt
-rw-r--r--  1 root   wheel      0 21 окт 16:11 21-10-2011.txt
Из за чего весь сэр-бор?

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-21 15:22:51
Neus

Код: Выделить всё

~> tar -xf project-`date +%d-%a-%Y`
tar: project-21-Fri-2011: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
~> tar -xf project-`date +%F`
tar: project-2011-10-21: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
у меня и с tar-ом все нормально, что на фре что на сусе...

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-22 8:46:00
alex117
tar -xf project-`date +%d-%a-%Y`
tar: project-21-Fri-2011: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
~> tar -xf project-`date +%F`
tar: project-2011-10-21: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now


у меня и с tar-ом все нормально, что на фре что на сусе
!/bin/sh
DT=`date +"%d-%m-%Y"`
touch /home/bagas/$DT.txt


Код: Выделить всё
# la -l /home/bagas/ | grep txt
-rw-r--r-- 1 root wheel 0 21 окт 16:11 21-10-2011.txt



Из за чего весь сэр-бор?
Так вы в скрипт заверните это дело, а потом выполните.
А так в консоли и у меня нормально срабатывает.

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-22 11:09:09
bagas

Код: Выделить всё

#!/bin/sh
DT=`date +"%d-%m-%Y"`
touch /home/bagas/$DT.txt
Это и есть мини скрипт.

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-22 18:25:23
alex117
ну а если вместо touch tar поставить? Просто ради интереса, как у вас отработает?

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-23 11:55:08
Neus

Код: Выделить всё

#!/bin/sh

DATA1=data-`date +%d-%a-%R`
DATA2=data-`date +%F_%H-%M`
tar -xf $DATA1.tar
tar -xf $DATA2.tar

~> sh test.sh
data-23-Sun-12: Unknown host
tar: data-23-Sun-12\:52.tar: Cannot open: Input/output error
tar: Error is not recoverable: exiting now
tar: data-2011-10-23_12-52.tar: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
хы, действительно странно подставляет символ ":"
но вариант2 то работает!

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-23 17:17:59
bagas
вообще какой шел используется?

Re: Как подставить дату в имени файла в Linux?

Добавлено: 2011-10-24 8:27:43
alex117
Стандартно bash в OpenSuse, я ничего не менял.