Помогите собрать код резервного копирования на bash

Автор Tesla, 07 февраля 2015, 22:50:30

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Tesla

Цитата: Leo от 08 февраля 2015, 19:23:27
-9 - наилучшая степень сжатия, можно опустить...

Цитата: Tesla от 08 февраля 2015, 17:24:00При упаковке в архиве лежат папки с путем  /var/www/siteName/, подскажите как сделать так чтобы в архиве были только файлы в папки siteName ?

использовать tar опцию

     -C, --directory DIR
           change to directory DIR


либо сначала использовать cd, а затем tar
cd /var/www/siteName


С переходом в конкретную папку понятно.

На счет
" -C, --directory DIR
change to directory DIR"
Напишите пожалуйста в контексте кода
Цитата: ogost от 08 февраля 2015, 19:35:39
приведу скрипт бэкапа, которым пользуюсь я:
#!/bin/bash
#
# Directory where logs are kept:
LOGBASE=/root/backup/log

# Directories to backup
BACKUP_ROOT_DIR="srv/samba home/vmail"

# Get todays day name, eg Mon, Tue and so on
NOW=$(date +"%a")

# Tape device name
TAPE="/dev/st0"

# Exclude file
TAR_ARGS=""
EXCLUDE_CONF="/root/backup.exclude.conf"

#Backup logfile
LOGFILE=$LOGBASE/$NOW.backup.log

# Path to binaries
TAR=/bin/tar
MT=/bin/mt
MKDIR=/bin/mkdir

# ------------------------------------------------------------------------
# Excluding files when using tar
# Create a file called $EXCLUDE_CONF using a text editor
# Add files matching patterns such as follows (regex allowed):
# home/vivek/iso
# home/vivek/*.cpp~
# ------------------------------------------------------------------------
[ -f $EXCLUDE_CONF ] && TAR_ARGS="-X $EXCLUDE_CONF"

##### Different backup methods
# Make full backup
full_backup(){
local old=$(pwd)
cd /
$TAR $TAR_ARGS -cvpf $TAPE $BACKUP_ROOT_DIR
$MT -f $TAPE rewind
$MT -f $TAPE offline
cd $old
}

# Make partial backup
partial_backup(){
local old=$(pwd)
cd /
$TAR $TAR_ARGS -cvpf $TAPE -N "$(date -d '2 days ago')" $BACKUP_ROOT_DIR
$MT -f $TAPE rewind
$MT -f $TAPE offline
cd $old
}

# Make sure all dirs exists
verify_backup_dirs(){
local s=0
for d in $BACKUP_ROOT_DIR
do
if [ ! -d /$d ];
then
echo "Error : /$d directory does not exists"
s=1
fi
done
# if not; just die
[ $s -eq 1 ] && exit 1
}

#### Main logic ####

# Make sure log dir exists
[ ! -d $LOGBASE ] && $MKDIR -p $LOGBASE

# Verify dirs
verify_backup_dirs

# Actual backup starts here
# Fullbackup on weekends
# Partial backup on Mon, Wed, Fri
case $NOW in
Sun) full_backup;;
Mon|Tue|Wed|Thu|Fri) partial_backup;;
*) ;;
esac > $LOGFILE 2>&1

нашел его в интернетах и пользуюсь фактически в неизменном виде. разве что здесь бэкап записывается на пленку (/dev/st0 и /bin/mt), а вам наверняка этого не нужно.
я думаю, с минимальными изменениями вы сможете адаптировать его под свои нужды.

Спасибо!

Leo

кроме прочего имя бэкапа может содержать дату например так: backup-$(date +%Y%m%d).tar

Tesla

Цитата: Leo от 08 февраля 2015, 20:16:44
Цитата: Tesla от 08 февраля 2015, 19:57:47Напишите пожалуйста в контексте кода
вероятно tar -C /var/www/siteName -czf backUp.tag.gz databaseName.sql files.tar или как там у вас...
Єта функция в архив backUp.tag.gz  упакует databaseName.sql, files.tar й файли с папки /var/www/siteName ?

Сообщение объединено: 08 февраля 2015, 20:27:35

Цитата: Leo от 08 февраля 2015, 20:23:52
кроме прочего имя бэкапа может содержать дату например так: backup-$(date +%Y%m%d).tar
Спасибо, знаю

Leo

Цитата: Tesla от 08 февраля 2015, 20:27:12Єта функция в архив backUp.tag.gz  упакует databaseName.sql, files.tar й файли с папки /var/www/siteName ?
смоделируйте похожую структуру локально и проверьте.

Tesla

Цитата: Leo от 08 февраля 2015, 20:31:44
Цитата: Tesla от 08 февраля 2015, 20:27:12Єта функция в архив backUp.tag.gz  упакует databaseName.sql, files.tar й файли с папки /var/www/siteName ?
смоделируйте похожую структуру локально и проверьте.
Чтобы моделировать я хочу уточнить или я правило все понял