Šta je novo?

Backup skript - potrebna pomoc

kUdtiHaEX

Super ridža
Administrator
Učlanjen(a)
18.07.2001
Poruke
18,077
Poena
1,365
Moja oprema  
CPU & Cooler
Intel® Core™ i5-9500F, NZXT Kraken Z63
GPU
Asus GTX 2070 Super
Storage
Samsung 980 Pro NVMe 1 TB
Kućište
NZXT H210i
Monitor
LG C2 42"
Miš & tastatura
Logitech G502, Keychron K8, Nuphy Air75, Ducky TKL One 2
Ostale periferije
Glupi HP štampač
Laptop
Apple Macbook Pro 14" M1
Tablet
Apple iPad Pro 11"
Mobilni telefon
Apple iPhone 13 Pro Max
Pametni uređaji
Apple Watch Ultra
Pristup internetu
  1. Kablovski internet
Uspeo sam da napisem jednu backup skriptu koja bi se vrtela u cron-u ali posto nisam bas mnogo vican shell scriptingu potrebna mi je pomoc.

Moj skript izgleda ovako:

Kod:
COMPNAME=bla
DIR="/home"
BACKUPDIR=/backup
TIMEDIR=/backups/last-full
ARCHIVER=/bin/tar
PATH=/usr/local/bin:/usr/bin:/bin
WEEK=`date +%a`
MONTH=`date +%d`
DATEMONTH=`date +%d%b`

#mesecni full bekap
if [ $MONTH = "01" ]; then
        NEWER=""
        $ARCHIVER $NEWER -cf $BACKUPDIR/$DATEMONTH.tar $DIR
fi

# Nedeljni full bekap
#prvo proveravamo koji je dan
if [ $WEEK= "Wed" ]; then
        NEWER=""
        NOW=`date +%d-%b`

        # Update full bekapa
        echo $NOW > $TIMEDIR/$COMPNAME-full-date
        $ARCHIVER $NEWER -cf $BACKUPDIR/$COMNAME-$WEEK.tar $DIR

# Inkrementalni bekap
else

        # Datum zadnjeg bekapa
        NEWER="--newer `cat $TIMEDIR/$COMPNAME-full-date`"
        # Arhiviraj
        $ARCHIVER $NEWER -cf $BACKUPDIR/$COMPNAME-$WEEK.tar $DIR
fi

E sad... postavlja se sledece pitanje: posto ja u home direktorijumu imam gomilu poddirektorijuma, ja bih zeleo da moj bekap skript ne pravi od celog home direktorijuma jedan TAR fajl vec da od svakog poddirektorijuma unutar /home direktorijuma pravi TAR fajl.

Na primer, ako su /home/a i /home/b dva poddirektorijuma ja zelim a.tar i b.tar.

Kako to da izvedem? :)
 
Poslednja izmena:
ja to znam u tcsh-u nisam vican bash-ovanju, ali mozes da pozoves ovaj skript iz tog :)

tarSubdirs.csh:
Kod:
#!/bin/tcsh

# pretpostavlja se da se skripta pokrece u direktorijumu ciji poddirektorijumi treba da se taruju.

set dest="/putanja/do/direktorijuma/gde/idu/arhive"

foreach filename (*)
  # ako je direktorijum
  if(-d "$filename") then
    tar cjf "$dest$filename.tar.bz2" "$filename"
  endif
end
 
Ako hoćeš to isto u bashu:

Kod:
for file_name in *
 do
   if [ -d $file_name] then
     tar ... # taruješ taj dir ceo
   else
     #ako nije dir onda ga ubaciš u neku home.tar arhivu recimo
  fi
done
 
To je to Zeleni :)
Hvala.
 
A jel ima slucajno neko neki nacin da mi obicni smrtnici backupujemo bazu naseg foruma automaCki? :d
 
Kod:
#!/bin/bash

MYSQL_DATABASES='baza1 baza2 baza3'; # a list of databases to backup
MYSQL_LOCATION='/usr/bin/'; # location of mysql
TEMP_DIR='/home/user/tmp/'; # location of temp dir
STORE_DIR='/home/user/backup/'; # location where tar files should be stored!
MYSQL_USER='user'; 
MYSQL_PASSWORD='password';

function backup_sql () {
    mysqldump --opt -c -e -Q --user=$MYSQL_USER --password=$MYSQL_PASSWORD $1 > $TEMP_DIR/$1.sql    
}

cd $TEMP_DIR

# make some timestamps for achieving the files.
TIMESTAMP=`date +%d-%B-%Y.%H-%M`
MONTH=`date +%B-%Y`

echo " - Starting to Backup MySQL Databases ...";

for i in $MYSQL_DATABASES;
    do
        backup_sql $i;
        echo "   - $i database backed up.";
    done;

# Tar them all up ;)
tar czpf $TIMESTAMP.tar.gz *.sql

# well now we have all our databases in sql files lets move them to the right directory
cd $STORE_DIR
mkdir -p $MONTH
cd $MONTH
cp -L $TEMP_DIR/$TIMESTAMP.tar.gz .

# do some cleaning up :)
cd $TEMP_DIR
rm -rf *.sql
rm -rf *.tar.gz

echo " - The Databases have been Backed up Successfully!";

evo ovaj npr... obrati paznju samo na putanje...
 
Poslednja izmena:
Nazad
Vrh Dno