pastebin - collaborative debugging

pastebin is a collaborative debugging tool allowing you to share and modify code snippets while chatting on IRC, IM or a message board.

This site is developed to XHTML and CSS2 W3C standards. If you see this paragraph, your browser does not support those standards and you need to upgrade. Visit WaSP for a variety of options.

Wysłany przez nUmer dnia 2008-05-8 o 21:50
pobierz | nowy post

  1. #!/bin/bash
  2. ###############################################################################################
  3. # Program ten może być rozpowszechniany na zasadach licencji GPL2, której treść zawarta
  4. # jest na stronie http://www.gnu.org/licenses/gpl.html, nieoficjalne polskie tłumaczenie
  5. # na stronie http://gnu.org.pl/text/licencja-gnu.html.
  6. # autor: Nowak Roman
  7. ###############################################################################################
  8. program_name="rusznikarz"
  9. program_version="0.3"
  10. temp=`mktemp -t rusznikarz.$$_XXXXXX` || exit 1
  11. temp1=`mktemp -t rusznikarz.$$_XXXXXX` || exit 1
  12. umask 077
  13. IFS='
  14.        '
  15. #exec 5>&2
  16. #exec 2>/dev/null
  17. ###############################################################################################
  18. katalog=`sed -n '/\[miejsce\ złożenia\ kopii\]/p' $HOME/.rusznikarzrc 2>/dev/null|tr -s "\t\ " "\ "\
  19. |sed -n '/\[miejsce\ złożenia\ kopii\]/s/\[miejsce\ złożenia\ kopii\] \[\(.*\)\]/\1/p'` 2>/dev/null
  20. ilosc=`sed -n '/\[max\ ilość\ zachowanych\ kopii\]/p' $HOME/.rusznikarzrc 2>/dev/null|tr -s "\t\ " "\ "\
  21. |sed -n '/\[max\ ilość\ zachowanych\ kopii\]/s/\[max\ ilość\ zachowanych\ kopii\] \[\(.*\)\]/\1/p'` 2>/dev/null
  22. backup_do_pliku=`sed -n '/\[wszystko\ do\ jednego\ pliku\]/p' $HOME/.rusznikarzrc 2>/dev/null|tr -s "\t\ " "\ "\
  23. |sed -n '/\[wszystko\ do\ jednego\ pliku\]/s/\[wszystko\ do\ jednego\ pliku\] \[\(.*\)\]/\1/p'` 2>/dev/null
  24. backup_katalogi=`sed -n '/\[podziel\ na\ katalogi\ główne\]/p' $HOME/.rusznikarzrc 2>/dev/null|tr -s "\t\ " "\ "\
  25. |sed -n '/\[podziel\ na\ katalogi\ główne\]/s/\[podziel\ na\ katalogi\ główne\] \[\(.*\)\]/\1/p'` 2>/dev/null
  26. backup_pm=`sed -n '/\[podziel\ na\ punkty\ montowania\]/p' $HOME/.rusznikarzrc 2>/dev/null|tr -s "\t\ " "\ "\
  27. |sed -n '/\[podziel\ na\ punkty\ montowania\]/s/\[podziel\ na\ punkty\ montowania\] \[\(.*\)\]/\1/p'` 2>/dev/null
  28. uzytkownik=`sed -n '/\[użytkownik\]/p' $HOME/.rusznikarzrc 2>/dev/null|tr -s "\t\ " "\ "\
  29. |sed -n '/\[użytkownik\]/s/\[użytkownik\] \[\(.*\)\]/\1/p'` 2>/dev/null
  30. grupa=`sed -n '/\[grupa\]/p' $HOME/.rusznikarzrc 2>/dev/null|tr -s "\t\ " "\ "\
  31. |sed -n '/\[grupa\]/s/\[grupa\] \[\(.*\)\]/\1/p'` 2>/dev/null
  32. prawa=`sed -n '/\[prawa\]/p' $HOME/.rusznikarzrc 2>/dev/null|tr -s "\t\ " "\ "\
  33. |sed -n '/\[prawa\]/s/\[prawa\] \[\(.*\)\]/\1/p'` 2>/dev/null
  34. suma_k=`sed -n '/\[utworzyć\ sumę\ kontrolną\]/p' $HOME/.rusznikarzrc 2>/dev/null|tr -s "\t\ " "\ "\
  35. |sed -n '/\[utworzyć\ sumę\ kontrolną\]/s/\[utworzyć\ sumę\ kontrolną\] \[\(.*\)\]/\1/p'` 2>/dev/null
  36. wykluczyc=`sed -n '/\[wykluczyć\ z\ archiwum\]/p' $HOME/.rusznikarzrc 2>/dev/null|tr -s "\t\ " "\ "\
  37. |sed -n '/\[wykluczyć\ z\ archiwum\]/s/\[wykluczyć\ z\ archiwum\] \[\(.*\)\]/\1/p'` 2>/dev/null
  38. #
  39. #date=`date +%d.%m.%Y`
  40. date=`date +%Y.%m.%d`
  41. ###########################################################################
  42. exclude=`sed -n 's/-)\ //p' $HOME/.rusznikarzrc 2>/dev/null|sed -n 's/\/\</--exclude=\//p'|tr -s "\n" "\ "` 2>/dev/null
  43. opcje=`sed -n 's/-tar)\ //p' $HOME/.rusznikarzrc 2>/dev/null|sed -e 's/\ * /\ /g'` 2>/dev/null
  44. dir=`sed -n 's/-dir)\ //p' $HOME/.rusznikarzrc 2>/dev/null|tr -s "\ " "\n"|sed -n 's/\</\//p'` 2>/dev/null
  45. dir_n=`sed -n 's/-dir)\ //p' $HOME/.rusznikarzrc 2>/dev/null|tr -s "\t\ " "\ "|tr -s "\ " "\n"` 2>/dev/null
  46. pm=`sed -n 's/-pm)\ //p' $HOME/.rusznikarzrc 2>/dev/null|tr -s ";" "\n"`
  47. ###########################################################################
  48. # FUNKCJE
  49. ###########################################################################
  50. function program ()
  51. {
  52. # rozszerzenie nazwy archiwum w zależności od formatu kompresji
  53. # nazwa rozszerzenia
  54. sed -n 's/-tar)//p' $HOME/.rusznikarzrc|grep -w -e --bzip2 1>/dev/null
  55. spr0=$?
  56. sed -n 's/-tar)//p' $HOME/.rusznikarzrc|grep -w -e -j 1>/dev/null
  57. spr1=$?
  58. sed -n 's/-tar)//p' $HOME/.rusznikarzrc|grep -w -e --gzip 1>/dev/null
  59. spr2=$?
  60. sed -n 's/-tar)//p' $HOME/.rusznikarzrc|grep -w -e -z 1>/dev/null
  61. spr3=$?
  62.  
  63. if [ "$spr0" = "0" ] || [ "$spr1" = "0" ] ; then
  64. roz_n=".tar.bz"
  65. elif [ "$spr2" = "0"  ] || [ "$spr3" = "0"  ] ; then
  66. roz_n=".tar.gz"
  67. else
  68. roz_n=".tar"
  69. fi
  70.  
  71.  
  72. # wszystko do pliku
  73. if [ "$backup_do_pliku" = "tak" ] && [ "$wykluczyc" = "nie" ] ; then
  74.         if [ -d $katalog/$HOSTNAME-$date ] ; then
  75.                 eval tar "$opcje $katalog/$HOSTNAME-$date/$HOSTNAME$roz_n /"
  76.                 chown $uzytkownik "$katalog/$HOSTNAME-$date/$HOSTNAME$roz_n"
  77.                 chgrp $grupa "$katalog/$HOSTNAME-$date/$HOSTNAME$roz_n"
  78.                 chmod $prawa "$katalog/$HOSTNAME-$date/$HOSTNAME$roz_n"
  79.                 if [ $suma_k = 'tak' ] ; then
  80.                         mkdir -p "$katalog/$HOSTNAME-$date/md5sum"
  81.                         md5sum "$katalog/$HOSTNAME-$date/$HOSTNAME$roz_n" > "$katalog/$HOSTNAME-$date/md5sum/$HOSTNAME.md5sum"
  82.                 fi
  83.  
  84.                 ls -d $katalog/$HOSTNAME-*|sort -nr > $temp
  85.                 sed -n "$[ilosc+1],$ p" $temp|sort -nr > $temp1
  86.                 liczba=`cat $temp1|wc -l`
  87.                 x=1
  88.                         while [ $x -le $liczba ] ; do
  89.                                 hosts=`sed -n "$x p" $temp1`
  90.                                 eval "rm -rf $hosts"
  91.                                 x=$[x + 1]
  92.                         done
  93.  
  94.         else
  95.                 mkdir -p $katalog/$HOSTNAME-$date
  96.                 eval tar "$opcje $katalog/$HOSTNAME-$date/$HOSTNAME$roz_n /"
  97.                 chown $uzytkownik "$katalog/$HOSTNAME-$date/$HOSTNAME$roz_n"
  98.                 chgrp $grupa "$katalog/$HOSTNAME-$date/$HOSTNAME$roz_n"
  99.                 chmod $prawa "$katalog/$HOSTNAME-$date/$HOSTNAME$roz_n"
  100.                 if [ $suma_k = 'tak' ] ; then
  101.                         mkdir -p "$katalog/$HOSTNAME-$date/md5sum"
  102.                         md5sum "$katalog/$HOSTNAME-$date/$HOSTNAME$roz_n" > "$katalog/$HOSTNAME-$date/md5sum/$HOSTNAME.md5sum"
  103.                 fi
  104.  
  105.                 ls -d $katalog/$HOSTNAME-*|sort -nr > $temp
  106.                 sed -n "$[ilosc+1],$ p" $temp|sort -nr > $temp1
  107.                 liczba=`cat $temp1|wc -l`
  108.                 x=1
  109.                         while [ $x -le $liczba ] ; do
  110.                                 hosts=`sed -n "$x p" $temp1`
  111.                                 eval "rm -rf $hosts"
  112.                                 x=$[x + 1]
  113.                         done
  114.  
  115.         fi
  116. elif [ "$backup_do_pliku" = "tak" ] && [ "$wykluczyc" = "tak" ] ; then
  117.         if [ -d $katalog/$HOSTNAME-$date ] ; then
  118.                 eval tar "$opcje $katalog/$HOSTNAME-$date/$HOSTNAME$roz_n $exclude /"
  119.                 chown $uzytkownik "$katalog/$HOSTNAME-$date/$HOSTNAME$roz_n"
  120.                 chgrp $grupa "$katalog/$HOSTNAME-$date/$HOSTNAME$roz_n"
  121.                 chmod $prawa "$katalog/$HOSTNAME-$date/$HOSTNAME$roz_n"
  122.                 if [ $suma_k = 'tak' ] ; then
  123.                         mkdir -p "$katalog/$HOSTNAME-$date/md5sum"
  124.                         md5sum "$katalog/$HOSTNAME-$date/$HOSTNAME$roz_n" > "$katalog/$HOSTNAME-$date/md5sum/$HOSTNAME.md5sum"
  125.                 fi
  126.  
  127.                 ls -d $katalog/$HOSTNAME-*|sort -nr > $temp
  128.                 sed -n "$[ilosc+1],$ p" $temp|sort -nr > $temp1
  129.                 liczba=`cat $temp1|wc -l`
  130.                 x=1
  131.                         while [ $x -le $liczba ] ; do
  132.                                 hosts=`sed -n "$x p" $temp1`
  133.                                 eval "rm -rf $hosts"
  134.                                 x=$[x + 1]
  135.                         done
  136.         else
  137.                 mkdir -p $katalog/$HOSTNAME-$date
  138.                 eval tar "$opcje $katalog/$HOSTNAME-$date/$HOSTNAME$roz_n $exclude /"
  139.                 chown $uzytkownik "$katalog/$HOSTNAME-$date/$HOSTNAME$roz_n"
  140.                 chgrp $grupa "$katalog/$HOSTNAME-$date/$HOSTNAME$roz_n"
  141.                 chmod $prawa "$katalog/$HOSTNAME-$date/$HOSTNAME$roz_n"
  142.                 if [ $suma_k = 'tak' ] ; then
  143.                         mkdir -p "$katalog/$HOSTNAME-$date/md5sum"
  144.                         md5sum "$katalog/$HOSTNAME-$date/$HOSTNAME$roz_n" > "$katalog/$HOSTNAME-$date/md5sum/$HOSTNAME.md5sum"
  145.                 fi
  146.  
  147.                 ls -d $katalog/$HOSTNAME-*|sort -nr > $temp
  148.                 sed -n "$[ilosc+1],$ p" $temp|sort -nr > $temp1
  149.                 liczba=`cat $temp1|wc -l`
  150.                 x=1
  151.                         while [ $x -le $liczba ] ; do
  152.                                 hosts=`sed -n "$x p" $temp1`
  153.                                 eval "rm -rf $hosts"
  154.                                 x=$[x + 1]
  155.                         done
  156.         fi
  157. fi
  158.  
  159. # podziel na katalogi główne
  160.  
  161. if [ "$backup_katalogi" = "tak" ] && [ "$wykluczyc" = "nie" ] ; then
  162.         if [ -d $katalog/$HOSTNAME-$date ] ; then
  163.                 echo "$dir" >$temp
  164.                 linii=`cat "$temp"|wc -l`
  165.                 echo "$dir_n" >>"$temp"
  166.                 wiersz_nk=$[linii+1]
  167.                 x=1
  168.                
  169.                 while [ "$x" -le "$linii" ] ; do
  170.                 kat=`sed -n "$x p" "$temp"`
  171.                 kat_n=`sed -n "$wiersz_nk p" "$temp"`
  172.                 eval tar "$opcje $katalog/$HOSTNAME-$date/$kat_n$roz_n $kat"
  173.                 chown $uzytkownik "$katalog/$HOSTNAME-$date/$kat_n$roz_n"
  174.                 chgrp $grupa "$katalog/$HOSTNAME-$date/$kat_n$roz_n"
  175.                 chmod $prawa "$katalog/$HOSTNAME-$date/$kat_n$roz_n"
  176.                 if [ $suma_k = 'tak' ] ; then
  177.                         mkdir -p "$katalog/$HOSTNAME-$date/md5sum"
  178.                         md5sum "$katalog/$HOSTNAME-$date/$kat$roz_n" > "$katalog/$HOSTNAME-$date/md5sum/$kat$roz_n.md5sum"
  179.                 fi
  180.                 x=$[x + 1]
  181.                 wiersz_nk=$[wiersz_nk + 1]
  182.                 done
  183.  
  184.                 ls -d $katalog/$HOSTNAME-*|sort -nr > $temp
  185.                 sed -n "$[ilosc+1],$ p" $temp|sort -nr > $temp1
  186.                 liczba=`cat $temp1|wc -l`
  187.                 x=1
  188.                         while [ $x -le $liczba ] ; do
  189.                                 hosts=`sed -n "$x p" $temp1`
  190.                                 eval "rm -rf $hosts"
  191.                                 x=$[x + 1]
  192.                         done
  193.  
  194.         else
  195.                 mkdir -p $katalog/$HOSTNAME-$date
  196.                 echo "$dir" >$temp
  197.                 linii=`cat "$temp"|wc -l`
  198.                 echo "$dir_n" >>"$temp"
  199.                 wiersz_nk=$[linii+1]
  200.                 x=1
  201.  
  202.                 while [ "$x" -le "$linii" ] ; do
  203.                 kat=`sed -n "$x p" "$temp"`
  204.                 kat_n=`sed -n "$wiersz_nk p" "$temp"`
  205.                 eval tar "$opcje $katalog/$HOSTNAME-$date/$kat_n$roz_n $kat"
  206.                 chown $uzytkownik "$katalog/$HOSTNAME-$date/$kat_n$roz_n"
  207.                 chgrp $grupa "$katalog/$HOSTNAME-$date/$kat_n$roz_n"
  208.                 chmod $prawa "$katalog/$HOSTNAME-$date/$kat_n$roz_n"
  209.                 if [ $suma_k = 'tak' ] ; then
  210.                         mkdir -p "$katalog/$HOSTNAME-$date/md5sum"
  211.                         md5sum "$katalog/$HOSTNAME-$date/$kat$roz_n" > "$katalog/$HOSTNAME-$date/md5sum/$kat$roz_n.md5sum"
  212.                 fi
  213.                 x=$[x + 1]
  214.                 wiersz_nk=$[wiersz_nk + 1]
  215.                 done
  216.  
  217.                 ls -d $katalog/$HOSTNAME-*|sort -nr > $temp
  218.                 sed -n "$[ilosc+1],$ p" $temp|sort -nr > $temp1
  219.                 liczba=`cat $temp1|wc -l`
  220.                 x=1
  221.                         while [ $x -le $liczba ] ; do
  222.                                 hosts=`sed -n "$x p" $temp1`
  223.                                 eval "rm -rf $hosts"
  224.                                 x=$[x + 1]
  225.                         done
  226.  
  227.         fi
  228. elif [ "$backup_katalogi" = "tak" ] && [ "$wykluczyc" = "tak" ] ; then
  229.         if [ -d $katalog/$HOSTNAME-$date ] ; then
  230.                 echo "$dir" >"$temp"
  231.                 linii=`cat "$temp"|wc -l`
  232.                 echo "$dir_n" >>"$temp"
  233.                 wiersz_nk=$[linii + 1]
  234.                 x=1
  235.  
  236.                 while [ "$x" -le "$linii" ] ; do
  237.                 kat=`sed -n "$x p" "$temp"`
  238.                 kat_n=`sed -n "$wiersz_nk p" "$temp"`
  239.                 eval tar "$opcje $katalog/$HOSTNAME-$date/$kat_n$roz_n $exclude $kat"
  240.                 chown $uzytkownik "$katalog/$HOSTNAME-$date/$kat_n$roz_n"
  241.                 chgrp $grupa "$katalog/$HOSTNAME-$date/$kat_n$roz_n"
  242.                 chmod $prawa "$katalog/$HOSTNAME-$date/$kat_n$roz_n"
  243.                 if [ $suma_k = 'tak' ] ; then
  244.                         mkdir -p "$katalog/$HOSTNAME-$date/md5sum"
  245.                         md5sum "$katalog/$HOSTNAME-$date/$kat$roz_n" > "$katalog/$HOSTNAME-$date/md5sum/$kat$roz_n.md5sum"
  246.                 fi
  247.                 x=$[x + 1]
  248.                 wiersz_nk=$[wiersz_nk + 1]
  249.                 done
  250.  
  251.                 ls -d $katalog/$HOSTNAME-*|sort -nr > $temp
  252.                 sed -n "$[ilosc+1],$ p" $temp|sort -nr > $temp1
  253.                 liczba=`cat $temp1|wc -l`
  254.                 x=1
  255.                         while [ $x -le $liczba ] ; do
  256.                                 hosts=`sed -n "$x p" $temp1`
  257.                                 eval "rm -rf $hosts"
  258.                                 x=$[x + 1]
  259.                         done
  260.  
  261.         else
  262.                 mkdir -p $katalog/$HOSTNAME-$date
  263.                 echo "$dir" >"$temp"
  264.                 linii=`cat "$temp"|wc -l`
  265.                 echo "$dir_n" >>"$temp"
  266.                 wiersz_nk=$[linii + 1]
  267.                 x=1
  268.  
  269.                 while [ "$x" -le "$linii" ] ; do
  270.                 kat=`sed -n "$x p" "$temp"`
  271.                 kat_n=`sed -n "$wiersz_nk p" "$temp"`
  272.                 eval tar "$opcje $katalog/$HOSTNAME-$date/$kat_n$roz_n $exclude $kat"
  273.                 chown $uzytkownik "$katalog/$HOSTNAME-$date/$kat_n$roz_n"
  274.                 chgrp $grupa "$katalog/$HOSTNAME-$date/$kat_n$roz_n"
  275.                 chmod $prawa "$katalog/$HOSTNAME-$date/$kat_n$roz_n"
  276.                 if [ $suma_k = 'tak' ] ; then
  277.                         mkdir -p "$katalog/$HOSTNAME-$date/md5sum"
  278.                         md5sum "$katalog/$HOSTNAME-$date/$kat$roz_n" > "$katalog/$HOSTNAME-$date/md5sum/$kat$roz_n.md5sum"
  279.                 fi
  280.                 x=$[x + 1]
  281.                 wiersz_nk=$[wiersz_nk + 1]
  282.                 done
  283.  
  284.                 ls -d $katalog/$HOSTNAME-*|sort -nr > $temp
  285.                 sed -n "$[ilosc+1],$ p" $temp|sort -nr > $temp1
  286.                 liczba=`cat $temp1|wc -l`
  287.                 x=1
  288.                         while [ $x -le $liczba ] ; do
  289.                                 hosts=`sed -n "$x p" $temp1`
  290.                                 eval "rm -rf $hosts"
  291.                                 x=$[x + 1]
  292.                         done
  293.  
  294.         fi
  295. fi
  296.  
  297. # podziel na punkty montowania
  298. if [ "$backup_pm" = "tak" ] && [ "$wykluczyc" = "nie" ] ; then
  299.         if [ -d $katalog/$HOSTNAME-$date ] ; then
  300.                 echo "$pm" > $temp
  301.                 linii=`cat $temp|wc -l`
  302.                 x=1
  303.                 while [ $x -le $linii ] ; do
  304.                 kat=`sed -n "$x p" "$temp"`
  305.                 nazwa=`sed -n "$x p" "$temp"`
  306.                 pm_n=`basename "$nazwa"`
  307.                 if [ $pm_n = '/' ] ; then
  308.                         pm_n='system'
  309.                 fi
  310.                 eval tar "$opcje $katalog/$HOSTNAME-$date/$pm_n$roz_n $kat"
  311.                 chown $uzytkownik "$katalog/$HOSTNAME-$date/$pm_n$roz_n"
  312.                 chgrp $grupa "$katalog/$HOSTNAME-$date/$pm_n$roz_n"
  313.                 chmod $prawa "$katalog/$HOSTNAME-$date/$pm_n$roz_n"
  314.                 if [ $suma_k = 'tak' ] ; then
  315.                         mkdir -p "$katalog/$HOSTNAME-$date/md5sum"
  316.                         md5sum "$katalog/$HOSTNAME-$date/$pm_n$roz_n" > "$katalog/$HOSTNAME-$date/md5sum/$pm_n$roz_n.md5sum"
  317.                 fi
  318.                 x=$[x + 1]
  319.                 done
  320.  
  321.                 ls -d $katalog/$HOSTNAME-*|sort -nr > $temp
  322.                 sed -n "$[ilosc+1],$ p" $temp|sort -nr > $temp1
  323.                 liczba=`cat $temp1|wc -l`
  324.                 x=1
  325.                         while [ $x -le $liczba ] ; do
  326.                                 hosts=`sed -n "$x p" $temp1`
  327.                                 eval "rm -rf $hosts"
  328.                                 x=$[x + 1]
  329.                         done
  330.  
  331.         else
  332.                 mkdir -p $katalog/$HOSTNAME-$date
  333.                 echo $pm > $temp
  334.                 linii=`cat $temp|wc -l`
  335.                 x=1
  336.                 while [ $x -le $linii ] ; do
  337.                 kat=`sed -n "$x p" "$temp"`
  338.                 nazwa=`sed -n "$x p" "$temp"`
  339.                 pm_n=`basename "$nazwa"`
  340.                 if [ $pm_n = '/' ] ; then
  341.                         pm_n='system'
  342.                 fi
  343.                 eval tar "$opcje $katalog/$HOSTNAME-$date/$pm_n$roz_n $kat"
  344.                 chown $uzytkownik "$katalog/$HOSTNAME-$date/$pm_n$roz_n"
  345.                 chgrp $grupa "$katalog/$HOSTNAME-$date/$pm_n$roz_n"
  346.                 chmod $prawa "$katalog/$HOSTNAME-$date/$pm_n$roz_n"
  347.                 if [ $suma_k = 'tak' ] ; then
  348.                         mkdir -p "$katalog/$HOSTNAME-$date/md5sum"
  349.                         md5sum "$katalog/$HOSTNAME-$date/$pm_n$roz_n" > "$katalog/$HOSTNAME-$date/md5sum/$pm_n$roz_n.md5sum"
  350.                 fi
  351.                 x=$[x + 1]
  352.                 done
  353.  
  354.                 ls -d $katalog/$HOSTNAME-*|sort -nr > $temp
  355.                 sed -n "$[ilosc+1],$ p" $temp|sort -nr > $temp1
  356.                 liczba=`cat $temp1|wc -l`
  357.                 x=1
  358.                         while [ $x -le $liczba ] ; do
  359.                                 hosts=`sed -n "$x p" $temp1`
  360.                                 eval "rm -rf $hosts"
  361.                                 x=$[x + 1]
  362.                         done
  363.  
  364.         fi
  365. ############################
  366. elif [ "$backup_pm" = "tak" ] && [ "$wykluczyc" = "tak" ] ; then
  367.         if [ -d $katalog/$HOSTNAME-$date ] ; then
  368.                 echo "$pm" > $temp
  369.                 linii=`cat $temp|wc -l`
  370.                 x=1
  371.                 while [ $x -le $linii ] ; do
  372.                 kat=`sed -n "$x p" "$temp"`
  373.                 nazwa=`sed -n "$x p" "$temp"`
  374.                 pm_n=`basename "$nazwa"`
  375.                 if [ $pm_n = '/' ] ; then
  376.                         pm_n='system'
  377.                         exclude2=`sed -n 's/-pm)\ //p' $HOME/.rusznikarzrc|sed -n 's/[;]\/[;]/;/p'|sed 's/;/\n/g'|sed -n 's/\/\</--exclude=\//p'|awk -F" " '{printf $1"/*" "\n"}'|tr -s "\n" "\ "`
  378.                         eval tar "$opcje $katalog/$HOSTNAME-$date/$pm_n$roz_n $exclude$exclude2 $kat"
  379.                 else
  380.                         eval tar "$opcje $katalog/$HOSTNAME-$date/$pm_n$roz_n $exclude $kat"
  381.                 fi
  382.                 chown $uzytkownik "$katalog/$HOSTNAME-$date/$pm_n$roz_n"
  383.                 chgrp $grupa "$katalog/$HOSTNAME-$date/$pm_n$roz_n"
  384.                 chmod $prawa "$katalog/$HOSTNAME-$date/$pm_n$roz_n"
  385.                 if [ $suma_k = 'tak' ] ; then
  386.                         mkdir -p "$katalog/$HOSTNAME-$date/md5sum"
  387.                         md5sum "$katalog/$HOSTNAME-$date/$pm_n$roz_n" > "$katalog/$HOSTNAME-$date/md5sum/$pm_n$roz_n.md5sum"
  388.                 fi
  389.                 x=$[x + 1]
  390.                 done
  391.  
  392.                 ls -d $katalog/$HOSTNAME-*|sort -nr > $temp
  393.                 sed -n "$[ilosc+1],$ p" $temp|sort -nr > $temp1
  394.                 liczba=`cat $temp1|wc -l`
  395.                 x=1
  396.                         while [ $x -le $liczba ] ; do
  397.                                 hosts=`sed -n "$x p" $temp1`
  398.                                 eval "rm -rf $hosts"
  399.                                 x=$[x + 1]
  400.                         done
  401.  
  402.         else
  403.                 mkdir -p $katalog/$HOSTNAME-$date
  404.                 echo "$pm" > $temp
  405.                 linii=`cat $temp|wc -l`
  406.                 x=1
  407.                 while [ $x -le $linii ] ; do
  408.                 kat=`sed -n "$x p" "$temp"`
  409.                 nazwa=`sed -n "$x p" "$temp"`
  410.                 pm_n=`basename "$nazwa"`
  411.                 if [ $pm_n = '/' ] ; then
  412.                         pm_n='system'
  413.                         exclude2=`sed -n 's/-pm)\ //p' $HOME/.rusznikarzrc|sed -n 's/[;]\/[;]/;/p'|sed 's/;/\n/g'|sed -n 's/\/\</--exclude=\//p'|awk -F" " '{printf $1"/*" "\n"}'|tr -s "\n" "\ "`
  414.                         eval tar "$opcje $katalog/$HOSTNAME-$date/$pm_n$roz_n $exclude$exclude2 $kat"
  415.                 else
  416.                         eval tar "$opcje $katalog/$HOSTNAME-$date/$pm_n$roz_n $exclude $kat"
  417.                 fi
  418.                 chown $uzytkownik "$katalog/$HOSTNAME-$date/$pm_n$roz_n"
  419.                 chgrp $grupa "$katalog/$HOSTNAME-$date/$pm_n$roz_n"
  420.                 chmod $prawa "$katalog/$HOSTNAME-$date/$pm_n$roz_n"
  421.                 if [ $suma_k = 'tak' ] ; then
  422.                         mkdir -p "$katalog/$HOSTNAME-$date/md5sum"
  423.                         md5sum "$katalog/$HOSTNAME-$date/$pm_n$roz_n" > "$katalog/$HOSTNAME-$date/md5sum/$pm_n$roz_n.md5sum"
  424.                 fi
  425.                 x=$[x + 1]
  426.                 done
  427.  
  428.                 ls -d $katalog/$HOSTNAME-*|sort -nr > $temp
  429.                 sed -n "$[ilosc+1],$ p" $temp|sort -nr > $temp1
  430.                 liczba=`cat $temp1|wc -l`
  431.                 x=1
  432.                         while [ $x -le $liczba ] ; do
  433.                                 hosts=`sed -n "$x p" $temp1`
  434.                                 eval "rm -rf $hosts"
  435.                                 x=$[x + 1]
  436.                         done
  437.  
  438.         fi
  439. fi
  440. }
  441. ###########################################################################
  442. # kopia p-ych 512 bajtów każdej partycji
  443. function zarchiwizuj_MBR ()
  444. {
  445. fdisk -l|awk '{print $1}'|sed '1,7d'>$temp
  446. linie=`cat $temp|wc -l`
  447. x=1
  448. dysk=`sed -n "$x p" $temp`
  449. fdisk -l|awk '{print $1}'|sed -n '1,7d;s/\/dev\///p' >>$temp
  450. wiersz_n=$[linie + 1]
  451. # wykonaj kopię mbr+
  452. if [ -d "$katalog"/"$HOSTNAME-$date"/"MBR" ] ; then
  453.         while [ $x -le $linie ] ; do
  454.                 nazwa_mbr=`sed -n "$wiersz_n p" $temp`
  455.                 archiwizuj=`dd if=$dysk of=$katalog/$HOSTNAME-$date/MBR/mbr_$nazwa_mbr bs=512 count=1 2>/dev/null`
  456.                 $archiwizuj
  457.                         if [ $? = 0 ] ;then
  458.                                 echo "::mbr_$nazwa_mbr : wykonano"
  459.                                 chown $uzytkownik "$katalog/$HOSTNAME-$date/MBR/mbr_$nazwa_mbr"
  460.                                 chgrp $grupa "$katalog/$HOSTNAME-$date/MBR/mbr_$nazwa_mbr"
  461.                                 chmod $prawa "$katalog/$HOSTNAME-$date/MBR/mbr_$nazwa_mbr"
  462.                                 if [ $suma_k = 'tak' ] ; then
  463.                                         mkdir -p "$katalog/$HOSTNAME-$date/MBR/md5sum"
  464.                                         md5sum "$katalog/$HOSTNAME-$date/MBR/mbr_$nazwa_mbr" > "$katalog/$HOSTNAME-$date/MBR/md5sum/mbr_$nazwa_mbr.md5sum"
  465.                                 fi
  466.                         else
  467.                                 echo "::mbr_$nazwa_mbr : wystąpił błąd"
  468.                         fi
  469.                 x=$[x + 1]
  470.                 wiersz_n=$[wiersz_n + 1]
  471.         done
  472.         echo "==>"$katalog"/"$HOSTNAME-$date"/"MBR""
  473. else
  474.         mkdir -p "$katalog"/"$HOSTNAME-$date"/"MBR"
  475.         while [ $x -le $linie ] ; do
  476.                 nazwa_mbr=`sed -n "$wiersz_n p" $temp`
  477.                 archiwizuj=`dd if=$dysk of=$katalog/$HOSTNAME-$date/MBR/mbr_$nazwa_mbr bs=512 count=1 2>/dev/null`
  478.                 $archiwizuj
  479.                         if [ $? = 0 ] ;then
  480.                                 echo "::mbr_$nazwa_mbr : wykonano"
  481.                                 chown $uzytkownik "$katalog/$HOSTNAME-$date/MBR/mbr_$nazwa_mbr"
  482.                                 chgrp $grupa "$katalog/$HOSTNAME-$date/MBR/mbr_$nazwa_mbr"
  483.                                 chmod $prawa "$katalog/$HOSTNAME-$date/MBR/mbr_$nazwa_mbr"
  484.                                 if [ $suma_k = 'tak' ] ; then
  485.                                         mkdir -p "$katalog/$HOSTNAME-$date/MBR/md5sum"
  486.                                         md5sum "$katalog/$HOSTNAME-$date/MBR/mbr_$nazwa_mbr" > "$katalog/$HOSTNAME-$date/MBR/md5sum/mbr_$nazwa_mbr.md5sum"
  487.                                 fi
  488.                         else
  489.                                 echo "::mbr_$nazwa_mbr : wystąpił błąd"
  490.                         fi
  491.                         x=$[x + 1]
  492.                         wiersz_n=$[wiersz_n + 1]
  493.         done
  494.         echo "==>"$katalog"/"$HOSTNAME-$date"/"MBR""
  495. fi
  496. }
  497. ###########################################################################
  498. # utworzyć sumę kontrolną
  499. ###########################################################################
  500. # konfiguracja domyślna
  501. function konfiguracja ()
  502. {
  503.                 echo -ne "
  504.                 Wpisz ścieżkę do złożenia backupu:
  505.                 ==>\a"
  506.                 read wpis
  507.  
  508. echo "
  509.    >> Modyfikuj konfigurację poprzez edycję tego pliku <<
  510.                    >> rusznikarz v0.1 <<
  511. ###########################################################################
  512. [miejsce złożenia kopii] ["$wpis"]
  513. [max ilość zachowanych kopii] [3]
  514. ###########################################################################
  515. # Sposób wykonania kopii                         
  516. ###########################################################################
  517. # Zaznacz tylko jeden spośród trojga sposobów!: 
  518. [wszystko do jednego pliku] [tak]
  519. [podziel na katalogi główne] [nie]
  520. [podziel na punkty montowania] [nie]
  521. -pm) /boot;/;/usr/portage;/var;/home
  522. ###########################################################################
  523. # Uprawnienia do archiwum
  524. [użytkownik] [root]
  525. [grupa] [root]
  526. [prawa] [400]
  527. ###########################################################################
  528. [utworzyć sumę kontrolną] [tak]
  529. ###########################################################################
  530. [opcje dla programu tar]
  531. -tar) --create --preserve --atime-preserve --totals --ignore-failed-read --bzip2 --verbose --file
  532. ###########################################################################
  533. # Wykluczyć z backupu - uzupełnij wg. poniższego przykładu:
  534. [wykluczyć z archiwum] [tak]
  535. -) /$USER/opera/cache4/*
  536. -) /$USER/.thumbnails/*
  537. -) /dev/*
  538. -) /mnt/cdrom/*
  539. -) /mnt/floppy/*
  540. -) /mnt/loop0/*
  541. -) /mnt/loop1/*
  542. -) /mnt/loop2/*
  543. -) /mnt/loop3/*
  544. -) /mnt/loop4/*
  545. -) /mnt/loop5/*
  546. -) /mnt/loop6/*
  547. -) /mnt/loop7/*
  548. -) /proc/*
  549. -) /sys/*
  550. -) /tmp/*
  551. ###########################################################################
  552. # Główne drzewo katalogów
  553. -dir) bin boot etc home lib mnt opt root sbin usr var
  554. ###########################################################################
  555. " > $HOME/.rusznikarzrc
  556. }
  557. ###########################################################################
  558. function pomoc ()
  559. {
  560.                 echo "
  561.                 -b            wykonaj backup wg. danych z pliku konfiguracyjnego.
  562.                 -M            zarchiwizuje pierwszych 512 bajtów każdej partycji.
  563.                 -r            wygeneruje nowy domyślny plik konfiguracyjny.
  564.                 -h            wyświetli tę pomoc.
  565.                 -v           wyświetli wersję programu.
  566.        
  567.                 "
  568. }
  569. ###########################################################################
  570. function version
  571. {
  572.         echo "
  573.         $program_name $program_version
  574.         autor:    nUmer_inaczej
  575.         kontakt: as33@autograf.pl
  576.         "
  577. }
  578. ###########################################################################
  579.  
  580.         while getopts bMrhv opt
  581.         do
  582.         case $opt in
  583.                         M)      zarchiwizuj_MBR
  584.                         ;;
  585.                         r)      konfiguracja
  586.                         ;;
  587.                         h)      pomoc
  588.                         ;;
  589.                         b)      program
  590.                         ;;
  591.                         v)      version
  592.                         ;;
  593.         esac
  594.         done
  595. ###########################################################################
  596. trap "rm -f $temp $temp1" exit

Wyślij poprawioną bądź nową wersję poniżej lub utwórz nowy post.
Po wysłaniu poprawki, będziesz mógł/mogła w łatwy sposób porównać obydwie wersje.

Składnia

Aby zaznaczyć konkretną linię poprzedź ją znakami "@@"