Created
February 25, 2012 18:08
-
-
Save carbolymer/1909850 to your computer and use it in GitHub Desktop.
System Prostej Archiwizacji
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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