Login
Backup
124
NEW 13.09.04 23:00
Есть группа пользователей: user1, user2, user3 и т.д.
У каждого есть каталог /home/userNаme/doc
Нужно чтобы автоматически создавались архивы вида user_name-date.tar.gz
Я понимаю, что в скрипт нужно записать что-то типа
tar -czf $(Username)-$(date).tar.gz /home/$(Username)/doc/*
Как сделать так чтобы автоматически перебирались все пользователи, что имеют домашние каталоги в /home и как вычислить текущую дату?
Можно сделать ls /home > userlist, но как потом прочитать из файла все имена по очереди и выполнить для них указанные действия?
И вопрос сюда же, как можно автоматически убивать файлы старше чем, например, 2 недели?
Это чтобы не засорять старыми бекапами диск.
У каждого есть каталог /home/userNаme/doc
Нужно чтобы автоматически создавались архивы вида user_name-date.tar.gz
Я понимаю, что в скрипт нужно записать что-то типа
tar -czf $(Username)-$(date).tar.gz /home/$(Username)/doc/*
Как сделать так чтобы автоматически перебирались все пользователи, что имеют домашние каталоги в /home и как вычислить текущую дату?
Можно сделать ls /home > userlist, но как потом прочитать из файла все имена по очереди и выполнить для них указанные действия?
И вопрос сюда же, как можно автоматически убивать файлы старше чем, например, 2 недели?
Это чтобы не засорять старыми бекапами диск.
NEW 14.09.04 10:04
in Antwort Tolstyj 13.09.04 23:00
http://zope.cprogrammer.org/home/hydrа например.
Советую поискать на freshmeat.net по слову backup.
---
Хороший хирург поможет плохому танцору...
Советую поискать на freshmeat.net по слову backup.
---
Хороший хирург поможет плохому танцору...
NEW 14.09.04 10:56
in Antwort Tolstyj 13.09.04 23:00
не пробовал, но вроде так должно работать:
#!/bin/sh
CURRENT_DATE=`date "+%Y-%m-%d_%H:%M:%S"`
BACKUP=/my-backup
USERS="user1 user2 user3"
for user in $USERS
do
tar xfz ${BACKUP}/{user}-${CURRENT_DATE}.tgz /home/${user}/doc
done
>>И вопрос сюда же, как можно автоматически убивать файлы старше чем, например, 2 недели?
>>Это чтобы не засорять старыми бекапами диск.
#find /my-backup -type f -mtime +14 -exec /bin/rm {} \;
#!/bin/sh
CURRENT_DATE=`date "+%Y-%m-%d_%H:%M:%S"`
BACKUP=/my-backup
USERS="user1 user2 user3"
for user in $USERS
do
tar xfz ${BACKUP}/{user}-${CURRENT_DATE}.tgz /home/${user}/doc
done
>>И вопрос сюда же, как можно автоматически убивать файлы старше чем, например, 2 недели?
>>Это чтобы не засорять старыми бекапами диск.
#find /my-backup -type f -mtime +14 -exec /bin/rm {} \;
NEW 14.09.04 11:27
in Antwort Al_Bundy 14.09.04 10:56
Спасибо.
А можно
USERS="user1 user2 user3"
заменить на
USERS='ls /home'
Будет ли работать?
Просто если добавлять пользователей руками, то точо когда-нибудь забуду дописать нового?
А можно
USERS="user1 user2 user3"
заменить на
USERS='ls /home'
Будет ли работать?
Просто если добавлять пользователей руками, то точо когда-нибудь забуду дописать нового?
14.09.04 21:33
in Antwort Al_Bundy 14.09.04 13:44
Спасибо, заработало.
Вот еще вопрос возник нужно проверить переменную на сответствие списку.
Тоесть, есть ряд параметров, которые передаются скрипту и нужно проверить на допустимость их значения.
Я пытался организовать через так
if (test $1="op1" -o $1="op2" -o $1="op3" )
then
комманды
else
echo mistake
fi
Но что-то не пашет.
Как нужно это писать?
Вот еще вопрос возник нужно проверить переменную на сответствие списку.
Тоесть, есть ряд параметров, которые передаются скрипту и нужно проверить на допустимость их значения.
Я пытался организовать через так
if (test $1="op1" -o $1="op2" -o $1="op3" )
then
комманды
else
echo mistake
fi
Но что-то не пашет.
Как нужно это писать?
NEW 15.09.04 09:58
in Antwort Tolstyj 14.09.04 21:33
а для кокого shell скрипт? например у cshell syntax немного другой
етот пример для bash/ksh/sh
#! /bin/sh
if [ $# -ne 1 ]
then
echo "wrong number of parameter"
echo "Usage: $0 opt1|opt2|opt3"
exit
fi
if [ "${1}" = "opt1" -o "${1}" = "opt2" ]
then
echo "do somthing"
else
echo "mistake"
fi
а для параметров можно и switch - case применять, поиши на /usr или /etc там полно скриптов ....
етот пример для bash/ksh/sh
#! /bin/sh
if [ $# -ne 1 ]
then
echo "wrong number of parameter"
echo "Usage: $0 opt1|opt2|opt3"
exit
fi
if [ "${1}" = "opt1" -o "${1}" = "opt2" ]
then
echo "do somthing"
else
echo "mistake"
fi
а для параметров можно и switch - case применять, поиши на /usr или /etc там полно скриптов ....
NEW 15.09.04 20:24
in Antwort Al_Bundy 15.09.04 09:58
а для кокого shell скрипт?
Для bash.
Спасибо, я понял уже как писать. А то в книжке было написано какие параметры есть, а примера не было.
Для bash.
Спасибо, я понял уже как писать. А то в книжке было написано какие параметры есть, а примера не было.

