[+] Skrypt bash, kasowanie starych plików na serwerze
: 25 października 2013, 10:14
Cześć
Mam taki oto skrypt który ma kasować kopie zapasowe, które są starsze niż 60dni ale zostawiać chociaż jedną jeżeli warunek nie jest spełniony.
Skrypt działa dobrze ale w przypadku nazwy kopii ze spacjami nie kasuje ich, rozpatruje każdy człon z osobna czyli:
plik: ala ma kota
ala: Nie ma takiego pliku ani katalogu
ls: nie ma dostępu do ma: Nie ma takiego pliku ani katalogu
ls: nie ma dostępu do kota.odt: Nie ma takiego pliku ani katalogu
Jak to naprawić?
Mam taki oto skrypt który ma kasować kopie zapasowe, które są starsze niż 60dni ale zostawiać chociaż jedną jeżeli warunek nie jest spełniony.
Skrypt działa dobrze ale w przypadku nazwy kopii ze spacjami nie kasuje ich, rozpatruje każdy człon z osobna czyli:
plik: ala ma kota
ala: Nie ma takiego pliku ani katalogu
ls: nie ma dostępu do ma: Nie ma takiego pliku ani katalogu
ls: nie ma dostępu do kota.odt: Nie ma takiego pliku ani katalogu
Jak to naprawić?
Kod: Zaznacz cały
#!/bin/bash
data=`date +%Y-%m-%d_%H:%M`
raport="ścieżka/skrypt/${data}.raport.log"
for dir in 'ścieżka/folder/1/' 'ścieżka/folder/2/'
do
ls -1Atr $(find "$dir"/* -mtime +60) | while read -r line
do
# tu robisz co chcesz z parametrem "$line"
count=$(ls -1At "${line%/*}" | wc -l)
if [ $count -gt 1 ] ; then
echo $line >> "$raport"
# echo tu jest wiecej niż jeden plik, wiec usuwam
rm -f "$line"
else
echo tu jest 1 lub 0 plików
fi
done
done