Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2020
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.85 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. function usage #wyswietlanie helpa
  4. {
  5.     echo
  6.     echo "Składnia: $0 [OPCJA] [PLIK] ..."
  7.     echo "Kompresowanie PLIKÓW (jeśli nie są skompresowane) i przeniesienie PLIKÓW do folderu $HOME/Kosz. Usuwanie z folderu $HOME/Kosz plików starszych niż 24h."
  8.     echo
  9.     echo "OPCJE"
  10.     echo "-h    wyświetla pomoc i kończy działanie"
  11. }
  12.  
  13. function removeOriginal #usuwa oryginalny plik
  14. {
  15.     compressed=$1 #$1 - skompresowany plik
  16.     original=$2 #$2 - oryginalny plik
  17.     if [ $compressed != $original ] #jesli plik skompresowany i oryginalny sa rozne
  18.     then
  19.         rm -r $original #usuniecie pliku oryginalnego
  20.     fi
  21. }
  22.  
  23. function removeCompressed #usuwa plik skompresowany
  24. {
  25.     compressed=$1 #$1 - skompresowany plik
  26.     original=$2 #$2 - oryginalny plik
  27.     if [ $compressed != $original ] #jesli plik skompresowany i oryginalny sa rozne
  28.     then
  29.         rm -r $compressed #usuniecie pliku skompresowanego
  30.     fi
  31. }
  32. function moveFile #usuwanie jednego pliku
  33. {
  34.     compressed=$1 #$1 - skompresowany plik
  35.     original=$2 #$2 - oryginalny plik
  36.     if [ -e $HOME/Kosz/$(basename $compressed) ] #jesli istnieje w koszu plik o danej nazwie
  37.     then #wewnetrzne menu
  38.         echo "Uwaga! Próbujesz usunąć plik $original. Plik o nazwie $(basename $original) znajduje się już w folderze $HOME/Kosz i zostanie nadpisany."
  39.         echo "Czy chcesz kontynuować?"
  40.         echo "t - tak"
  41.         echo "n - nie"
  42.  
  43.         read choice
  44.         case $choice in
  45.             "t") touch $compressed #zmiana czasu modyfikacji (do szukania plikow starszych niz 24h)
  46.                  mv -f $compressed $HOME/Kosz #nadpisanie istniejacego pliku
  47.                  removeOriginal $compressed $original;; #usuniecie oryginalu
  48.             "n") removeCompressed $compressed $original #usuniecie pliku skompresowanego
  49.                  echo "Nie usunieto pliku: $original.";;
  50.               *) echo "Opcja $choice nie istnieje. Wybrano domyślnie: n."
  51.                  removeCompressed $compressed $original #usuniecie pliku skompresowanego
  52.                  echo "Nie usunieto pliku: $original.";;
  53.         esac
  54.     else
  55.         touch $compressed #zmiana czasu modyfikacji (do szukania plikow starszych niz 24h)
  56.         mv $compressed $HOME/Kosz #przeniesienie pliku do kosza
  57.         removeOriginal $compressed $original #usuniecie oryginalu
  58.     fi
  59.  
  60. }
  61.  
  62. function removeFiles #usuwanie plikow
  63. {
  64.     if [ ! -e $HOME/Kosz ] #sprawdzenie, czy katalog Kosz istnieje
  65.     then
  66.         mkdir $HOME/Kosz #tworzenie katalogu Kosz, jesli nie istnieje
  67.     fi
  68.  
  69.     for i in $@ #iteracja po argumentach (plikach)
  70.     do
  71.         if [ -e $i ] #sprawdzenie, czy plik istnieje
  72.         then
  73.             if (! file $i | grep -q compressed) #sprawdzanie, czy plik jest juz skompresowany
  74.             then
  75.                 file_name=$(basename $i) #nazwa pliku (bez sciezki)
  76.                 parent_name=$(dirname $i) #nazwa folderu nadrzednego dla pliku
  77.                 tar -zcf $file_name.tar.gz -C $parent_name $file_name #kompresja, ktora zmienia tez czas modyfikacji
  78.                 # -C, by nie tworzyc zagniezdzonej struktury w przypadku usuwania pliku z jakiegos folderu
  79.                 moveFile $file_name.tar.gz $i #przeniesienie skompresowanego pliku do kosza i usuwanie oryginalu
  80.             else
  81.                 moveFile $i $i #przeniesienie skompresowanego pliku do kosza
  82.             fi
  83.         else #jesli plik nie istnieje
  84.             echo "Uwaga! Plik: $i nie istnieje!"
  85.         fi
  86.     done
  87. }
  88.  
  89. function remove24h #czyszczenie kosza
  90. {
  91.     #znalezenie plikow starszych niz 24h (1440 min.) w koszu (mmin, a nie mtime ze wzgledu na blad zaokraglen)
  92.     to_remove=$(find $HOME/Kosz/ -mindepth 1 -mmin +1440)
  93.     if [ ${#to_remove} -ne 0 ] #sprawdzenie, czy istnieja pliki do usuniecia
  94.     then
  95.         rm -r $to_remove #usuniecie plikow starszych niz 24h
  96.     fi
  97. }
  98.  
  99. while getopts ":h" option #sprawdzanie, czy uzytkownik wywolal pomoc
  100. do
  101.     case $option in
  102.     h) usage #wyswietlenie pomocy
  103.        exit;; #wyjscie z programu
  104.     \?) echo "Nieprawidlowa opcja."
  105.         echo "Sprobuj '$0 -h', by uzyskac wiecej informacji."
  106.         exit;; #wyjscie z programu
  107.     esac
  108. done
  109.  
  110. #gdy nie wywolano pomocy:
  111. removeFiles $@ #usuwanie podanych plikow
  112. remove24h #usuwanie plikow starszych niz 24h z kosza
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement