Nowe posty

Autor Wątek: kopiowanie katalogu i usuwanie najstarszego, utrzywanie 1000 najmłodsz  (Przeczytany 7484 razy)

emaniek

  • Gość
witam,

mam ja sobie taki kod:

#!/bin/bash
DATE=`date +%Y%m%d%H%M%S`
cp -a /home20/kopie_zapasowe/dane_aktualne/dane_aktualne_bak-${DATE}

KOPIE="/home/kopie_zapasowe/dane_aktualne/"
k=0
while read kopia; do
  ((k++))
  if [ $k -gt 1000 ]; then
    rm -rf "${KOPIE}/${kopia}"
  fi
done < <( ls -1 -tr "$KOPIE" )
exit 0
Chcę aby ciągle utrzymywał 1000 kopii, a jak będzie mial robic 1001 to usunie najstarszą i stworzy najnowsza. Chodzi o utrzymywanie najswizeszgo tysiaca kopii. Skrypt tworzy kopie, ale nie usuwa najstarszych jak juz osiagnie poziom 1000. A jak osiagnie 1000 to nie chce utworzyc 1001.
Oczywiscie demona uruchamia cron.

dziekuje za pomoc

arctgx

  • Gość
kopiowanie katalogu i usuwanie najstarszego, utrzywanie 1000 najmłodsz
« Odpowiedź #1 dnia: 2010-03-18, 22:43:16 »
Może zależy Ci na Twojej postaci, ale czy nie prościej użyć tablicy?
#!/bin/bash
IFS=$'\\n'
liczba_plikow=3
tab=(`ls -1tr kat/*`)
ls "${tab[@]:$liczba_plikow}" # tymczasowo zamiast rm
unset IFS
IFS i cudzysłów dałem ze względu na nazwy plików zawierające spacje.

emaniek

  • Gość
kopiowanie katalogu i usuwanie najstarszego, utrzywanie 1000 najmłodsz
« Odpowiedź #2 dnia: 2010-03-26, 20:59:48 »
a jak będzie jeśli chodzi o usuwanie nie pliku, a katalogu zawierjącego pliki? Czy istnieje gotowy skrypt najpierw tworzący kopię katalogu a potem usuwający najstarszą kopię?

ra-v

  • Gość
kopiowanie katalogu i usuwanie najstarszego, utrzywanie 1000 najmłodsz
« Odpowiedź #3 dnia: 2010-03-26, 22:41:51 »
Sprawdź to i wpleć w skrypt
cp -r katalog -t kopia-katalogu
rm -rf katalog