Skip to content

Instantly share code, notes, and snippets.

@carbolymer
Created February 25, 2012 18:08
Show Gist options
  • Save carbolymer/1909850 to your computer and use it in GitHub Desktop.
Save carbolymer/1909850 to your computer and use it in GitHub Desktop.
System Prostej Archiwizacji
#!/bin/bash
# katalog archiwum
ARCHIWUM='./archiwum'
# plik z baza plikow
BAZA=$ARCHIWUM'/baza.txt'
if [ $# == 0 ]; then
echo "System Prostej Archiwizacji
Uzycie:
$0 KOMENDA [plik]
gdzie KOMENDA:
add plik - dodaje plik do archiwum
rm plik - usuwa plik z archiwum
diff plik - wyswietla zmiany w stosunku do wersji w archiwum
restore plik - odzyskuje plik z archiwum
archive - archiwizuje wszystkie pliki
status - wyswietla status zsynchronizowania"
else
if [ ! -d $ARCHIWUM ]; then
mkdir $ARCHIWUM
fi
if [ ! -f $BAZA ] ; then
touch $BAZA
fi
counter=0
case $1 in
"add")
if [ -f $2 ]; then
if [ `grep $2 $BAZA | wc -l` -gt 0 ] ; then
echo "Plik $2 istnieje juz w archiwum. Mozesz go zaktualizowac komenda archive"
else
echo -e $PWD"/"$2 >> $BAZA
cp $2 $ARCHIWUM
echo "Dodano plik $2 do bazy."
fi
else
echo "Nie mozna dodac do archiwum: Nie ma takiego pliku: $2"
fi
;;
"archive")
for file in `cat $BAZA` ; do
filename=$ARCHIWUM'/'`basename $file`
if [ `diff -q $file $filename | wc -l` -gt 0 ] ; then
((counter++))
cp `grep $file $BAZA` $ARCHIWUM
fi
done
echo "Archiwizacja zakonczona. Zsynchronizowano $counter plikow."
;;
"status")
echo "Lista plikow w archiwum:"
for file in $(cat $BAZA) ; do
filename=$ARCHIWUM'/'`basename $file`
if [ `diff -q $file $filename | wc -l` -gt 0 ] ; then
((counter++))
echo -n " (+)"
fi
echo -e "\t$filename"
done
echo "W przechowalni jest `cat $BAZA | wc -l` plikow. $counter plikow jest niezsynchronizowanych (+)."
;;
"restore")
if [ -f $ARCHIWUM'/'$2 ] ; then
cp $ARCHIWUM'/'$2 $2
echo "Przywrócono kopię pliku $2"
else
echo "Nie ma takiego pliku: $2"
fi
;;
"diff")
if [ -f $ARCHIWUM'/'$2 ] ; then
if [ `diff -q $file $filename | wc -l` -gt 0 ] ; then
echo "Plik i jego wersja zarchiwizowana są identyczne."
else
echo "Wyniki porównania dla pliku $2 i jego kopii:"
diff $ARCHIWUM'/'$2 $2
fi
else
echo "Nie ma takiego pliku: $2"
fi
;;
"rm")
if [ -f $ARCHIWUM'/'$2 ] ; then
echo -n "Czy chcesz usunac plik: $2 ? (t/n): "
read answer
if [ $answer == t ]; then
rm $ARCHIWUM'/'$2
grep -v $2 $BAZA > /tmp/baza.txt
mv /tmp/baza.txt $BAZA
echo "Usunieto plik $2 z bazy"
else
echo "Nic nie usunieto."
fi
else
grep -v $2 $BAZA > /tmp/baza.txt
mv /tmp/baza.txt $BAZA
echo "Nie ma takiego pliku: $2"
fi
;;
*)
echo "Nieznana opcja $1"
;;
esac
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment