Pomoc Plik !bash - komenda nie kasuje plików zrzutów jpg z kamer IP

Wrobelts212P

Nowy użytkownik
Noobie
10 Listopad 2015
6
2
3
50
QNAP
Ethernet
100 Mbps
Witam,
napisałem plik wsadowy który kasuje stare pliki i katalogi, a przynajmniej miało być takie założenie.
Widzę, że listuje mi dobrze ale już nie kasuje mam NAS TS-212P, czy jest mi ktoś w stanie powiedzieć co jest źle w tym skrypcie?
Jak widać już nawet wpisywałem zmianę uprawnień.
Skrypt poniżej
Bash:
#!/bin/sh
echo
echo "Rozpoczecie kasowania"
date
echo "pojemnosc folderu przed kasowaniem"
du -s -h /share/FTPN/
sleep 20
Pojemn_Start=$(du -s -h /share/FTPN/)
sleep 20
sudo chmod -R 4776 /share/FTPN/IP/
sleep 30
sudo chmod -R 4776 /share/FTPN/Analog/
sleep 30
echo "wyszukanie plikow do skasowania z kamer IP"
find /share/FTPN/IP/192.168.1.2/ -type d -mtime +50
sleep 10
echo "Wyszukanie plikow do skasowania z kamer analogowych"

find /share/FTPN/Analog/192.168.1.253/ -type d -mtime +50
sleep 10
echo "zakonczenie listingu katalogow do wykasowania"

sudo find /share/FTPN/IP/192.168.1.2/ -type d -mtime +50 -exec rm -rf {} \;
sleep 10
sudo find /share/FTPN/Analog/192.168.1.253/ -type d -mtime +50 -exec rm -rf {} \;
sleep 10
sudo chmod -R 4666 /share/FTPN/IP/
speep 30
sudo chmod -R 4666 /share/FTPN/Analog/
sleep 30
echo "Rozmiar katalogu po kasowaniu"
du -s -h /share/FTPN/
sleep 20
Pojemn_Stop=$(du -s -h /share/FTPN/)
sleep 20
date
echo "Zakonczenie kasowania"
Mam nadzieję, że wybrałem dobrze grupę tematów. Jeżeli nie to proszę poprawcie mnie.
 
Zacznijmy od tego ze prawdopodobnie nie musisz uzywac sudo bo i tak bedziesz uruchamial skrypt z admina.
Po drugie Twój find może nie obsługiwać argumentu exec. Możesz to sprawdzić:
Bash:
find --help
.
Jesli z możliwych argumentów jest -exec to przejdz do kolejnego punktu. Jesli nie to zainstaluj Entware a w nim następnie
Bash:
opkg install findutils
Po za tym argumentem -type definiujesz aby listować katalogi zamiast plików.
Sam sprawdź:
Kod:
find /share/FTPN/IP/192.168.1.2/ -type d -mtime +50 -exec echo {} \;
A teraz wylistuj pliki:
Kod:
find /share/FTPN/IP/192.168.1.2/ -type f -mtime +50 -exec echo {} \;

Na moje oko ten skrypt powinien wyglądać tak:
Bash:
#!/bin/sh

DELETEDIR="/share/FTPN/"
DAY_AGO="50"

NOW=`date +%Y-%m-%d\ %H:%M:%S`
# Funkcja alternatywna zamiast sleep
_safe_abort_sleep(){
		local y=20;
		while [ "$y" -gt 0 ]; do
				y=$(expr $y - 1)
				echo "Odliczanie do rozpoczecia!... $y -- nacisnij CTRL+C aby przerwac"
				sleep 1
		done
}

_err(){
	echo -e "$*"
	echo

	exit 1
}

[ -d "$DELETEDIR" ] || _err "Katalog $DELETEDIR nie istnieje lub brak do niego dostępu"

echo -e "\n$NOW -- Rozpoczeto usuwanie startych plików z katalogu: $DELETEDIR \nProszę czekać..."
echo -n "Calkowita objetosc katalogu $(basename $DELETEDIR) przed usunieciem ... "
DIRSIZE=`du -sh $DELETEDIR`
echo $DIRSIZE

_safe_abort_sleep
echo -e "\nWyszukanie plikow do skasowania rekursywnie w katalogach wew. folderu $DELETEDIR ..."
find $DELETEDIR -type f -mtime +${DAY_AGO}

echo -e "\nPrzygotowanie do kasowania plików z $DELETEDIR ..."
_safe_abort_sleep
find $DELETEDIR -type f -mtime +${DAY_AGO} -exec rm -rf {} \;

echo -n "Calkowita objetosc katalogu $(basename $DELETEDIR) po usunieciu ... "
DIRSIZE=`du -sh $DELETEDIR`
echo $DIRSIZE

echo -e "\nProces usuwania starych plikow zakonczony."

Piwo stawiasz :)
 
Dziękuję za info i z pewnością będzie duże piwo :):). Muszę to przez weekend przemielić.
Ale w związku z tym mam jeszcze jedno pytanie jak doinstalować pakiety, bo te komendy z linuxa nie bardzo działają, chyba że coś źle robię?
 
@Silas Mariusz

upload_2018-7-27_18-44-7.png
 
Witam, przepraszam, że dopiero teraz będę się tym zajmował, ale nie bardzo miałem jak wcześniej.
zaraz go wbije i sprawdzę ten skrypt i powiem co i jak
Mega duże piwo. skrypt działa. Zaimplementowałem ten pierwszy gdyż na ten drugi jestem za cienki, a ten kumam.
Super kasuje. W ramach testu wykasowałem za dużo, ale to nic przynajmniej wiem jak to działa. dzięki bardzo.