jeśli włączysz rejestrator kamer - to on ma opcję nadpisywania starych nagrań.
dla danych - nie ma takiej opcji - jest to przynajmniej głupie - a na pewno niebezpieczne!!
dla danych - nie ma takiej opcji - jest to przynajmniej głupie - a na pewno niebezpieczne!!
u mnie są też nazwijmy to nagrania, rozchodzi się o to aby nie co "chwila" usuwać dane bo miejsca brakuje.
Raz trzeba to robić raz na miesiąc, innym razem jest to tydzień innym dwa. Wywalane zawsze są najstarsze.
Nie ma jakiegoś programu ?
Raz trzeba to robić raz na miesiąc, innym razem jest to tydzień innym dwa. Wywalane zawsze są najstarsze.
Nie ma jakiegoś programu ?
nie - tylko skryptowanie wchodzi w rachubę
poza tym - co to znaczy najstarsze dane ? załóżmy mam dane w dzisiaj i z wczoraj
skrypt odpala sie - kasuje wczorajsze - ok
nastepny dzień - kasuje wczorajsze ... upss - to było potrzebne ! i co dalej ?
poza tym - co to znaczy najstarsze dane ? załóżmy mam dane w dzisiaj i z wczoraj
skrypt odpala sie - kasuje wczorajsze - ok
nastepny dzień - kasuje wczorajsze ... upss - to było potrzebne ! i co dalej ?
- 5 Kwiecień 2008
- 10 205
- 4 730
- 405
- Odznaki
- 205
- QNAP
- TS-x77
- Ethernet
- 1 GbE
Raz trzeba to robić raz na miesiąc, innym razem jest to tydzień innym dwa. Wywalane zawsze są najstarsze.
Nie ma jakiegoś programu ?
to nie zadziała ...I wszystko starsze niż 30 dni w katalogu /share/Pool zostanie usuniete.
- 5 Kwiecień 2008
- 10 205
- 4 730
- 405
- Odznaki
- 205
- QNAP
- TS-x77
- Ethernet
- 1 GbE
Dac petle, robić df i sprawdzać czy dostępnego miejsca jest wystarczająca jeśli nie to ilość dni = ilość dni - 1 i robić znowu find. Proste jak fiks.
no chłopaki grubo jedziecie (kodem), gratuluję
.
Rozchodzi się o to aby np. 20% pojemności było zawsze wolne. Czyli w końcu się da czy nie, trochę się pogubiłem. Zapomniałem dodać że rozchodzi się o ~26TB, dane jeżeli są wrzucane na macierz jest to ok. 4-10GB co ~5 min.
Rozchodzi się o to aby np. 20% pojemności było zawsze wolne. Czyli w końcu się da czy nie, trochę się pogubiłem. Zapomniałem dodać że rozchodzi się o ~26TB, dane jeżeli są wrzucane na macierz jest to ok. 4-10GB co ~5 min.
- 5 Kwiecień 2008
- 10 205
- 4 730
- 405
- Odznaki
- 205
- QNAP
- TS-x77
- Ethernet
- 1 GbE
M
Mało_ważny_l00ser
Guest
Chyba prosciej sie nie da. Delete files older than X days +
Ale z utrzymaniem stalych 20% wolnej przestrzeni trzeba troche pokombinowac z logika.
Jak masz np katalog w ktorym masz pliki z calego miesiaca, to mozna wywolywac ta funkcje kasujaca, i ewentualnie sprawdzac czy po jej wykonaniu miejsce jest wystarczajace.
Logike moze byc np taka.
(zalozenia ze masz folder w ktorym sa rzeczy nie starsze niz 30 dni)
Ofc wszystko to mozna, i nawet nalezy robic w petli.
Ale z utrzymaniem stalych 20% wolnej przestrzeni trzeba troche pokombinowac z logika.
Jak masz np katalog w ktorym masz pliki z calego miesiaca, to mozna wywolywac ta funkcje kasujaca, i ewentualnie sprawdzac czy po jej wykonaniu miejsce jest wystarczajace.
Logike moze byc np taka.
(zalozenia ze masz folder w ktorym sa rzeczy nie starsze niz 30 dni)
Kod:
find /path/to/directory/ -mindepth 1 -mtime +30 -delete
sprawdzasz ile jest wolnego miejsca, jak za malo to idziesz punkt 3.
find /path/to/directory/ -mindepth 1 -mtime +29 -delete
sprawdzasz ile jest wolnego miejsca, jak za malo to idziesz punkt 5
find /path/to/directory/ -mindepth 1 -mtime +28 -delete
jak miejsca jest wystarczajaco konczysz program w tym momencie.
Ofc wszystko to mozna, i nawet nalezy robic w petli.
- 5 Kwiecień 2008
- 10 205
- 4 730
- 405
- Odznaki
- 205
- QNAP
- TS-x77
- Ethernet
- 1 GbE
Wymagane zainstalowanie Entware w App Center. Jeśli nie to skrypt sam zainstaluje wersje dla x86_64.
Wisisz mi flaszke
Bash:
#!/bin/sh
## settings
## ###########################################################################
DIR="/share/Pool/test"
PERCENT_DISK_USAGE=90
MAX_DAYS_LIMIT=90 # must be > MIN_DAYS_LIMIT
MIN_DAYS_LIMIT=1 # must be >= 1
DEBUG=1 # if DEBUG set 1 it will not delete data
## helpers
## ###########################################################################
## usage: _exit Dummy message
## Result: print message and abort program
## ###########################################################################
function _exit() {
echo -e "$*"
echo
exit 1
}
## usage: test_dir ${var} && echo Directory exist and is accessible
## Returns: true if $1 is accessible
## ###########################################################################
function test_dir() {
local _ret=0
_ret=`cd $1 2>/dev/null && echo 0 || echo 1`
return $_ret
}
## usage: echo ${var} direct path is: $(real_dir ${var})
## Result: print real direct path for $1
## Returns: true if $1 is accessible or false if failed
## ###########################################################################
function real_dir() {
local _ret=0
local _dir=
_dir=`readlink -f "$1"`
if [ -z "$_dir" ]; then
_dir="/directory/path/is/incorrect/or/symlink/is/corrupted"
_ret=1
fi
echo -n "$_dir"
return $_ret
}
## usage: is_val ${var} && echo "that's an int"
## Returns: true if $1 is Integer
## ###########################################################################
function is_val() {
if test ${1} -eq ${1} 2>/dev/null; then
return 0
fi
return 1
}
## usage: entware_install
## Result: Install x86_64 Entware to the system
## ###########################################################################
function entware_install() {
local _entware_download_url="https://qnapclub.eu/pl/qpkg/model/download/468616/Entware_1.02std.qpkg"
local _pkg_install_path="$(getcfg Entware Install_Path -f /etc/config/qpkg.conf -d error)"
if [ "$_pkg_install_path" = "error" ]; then
echo [1/5] We are going to install Entware x86_64 ...
local _pwd=`pwd`
cd /share/Public
echo [2/5] Downloading Entware ...
wget -q --no-check-certificate "$_entware_download_url" -O entware.qpkg
[ -f "entware.qpkg" ] || _exit $LINENO: Cannot download Entware QPKG.
echo [3/5] Installing Entware ...
sh entware.qpkg
rm entware.qpkg
cd "$_pwd"
fi
local _pkg_enable="$(getcfg Entware Enable -f /etc/config/qpkg.conf -d FALSE)"
if [ "$_pkg_enable" = "FALSE" ]; then
setcfg -f /etc/config/qpkg.conf Entware Enable TRUE
# /etc/init.d/Entware.sh start
fi
[ -x "/opt/bin/opkg" ] || /etc/init.d/Entware.sh start
[ -x "/opt/bin/opkg" ] || _exit $LINENO: Cannot install or run Entware
}
## usage: entware_deps
## Result: Installing program dependencies
## ###########################################################################
function entware_deps(){
if [ ! -x "/opt/bin/find" ]; then
echo [4/5] Updating Entware repository
/opt/bin/opkg update 2>/dev/null 1>/dev/null
echo [5/5] Installing find utils
/opt/bin/opkg install findutils 2>/dev/null 1>/dev/null
fi
[ -x "/opt/bin/find" ] || _exit "$LINENO: Cannot install entware's find util"
}
## usage: read_disk_usage ${var}
## Result: print disk usage for $1 path
## Returns: true if disk usage for $1 is readable or false if failed
## ###########################################################################
function read_disk_usage(){
local _ret=0
local _du=$(df -hP "$1" 2>/dev/null | grep -v "Filesystem" | awk '{print $5}' | tail -1 | sed 's/%$//g')
if [ -z "$_du" ]; then
echo $LINENO: Cannot read disk usage
_ret=1
fi
echo -n $_du
return $_ret
}
## check prerequisites
## ###########################################################################
test_dir "$DIR" || _exit Clean-up directory does not exist: $DIR
DIR=$(real_dir "$DIR")
entware_install
entware_deps
## program
## ###########################################################################
__du=$(read_disk_usage "$DIR")
is_val 5 || _exit $LINENO: test
is_val $__du || _exit $LINENO: Cannot read disk usage properly
echo "Disk usage for: $DIR --- is: $__du %"
if [ ! "$__du" -gt "$PERCENT_DISK_USAGE" ]; then
echo Skipping files clean-up...
exit 0
fi
__days_to_remove=$MAX_DAYS_LIMIT
while [ "$__du" -gt "$PERCENT_DISK_USAGE" ] && [ "$__days_to_remove" -gt "$MIN_DAYS_LIMIT" ]
do
echo Deleteing files older than $__days_to_remove
if [ "$DEBUG" = "1" ]; then
echo DEBUG enabled. Files will NOT be deleted!
/opt/bin/find "$DIR" -name "*" -type d -mtime +${__days_to_remove} -print -exec echo "{}" \;
else
echo Deleting these files:
/opt/bin/find "$DIR" -name "*" -type d -mtime +${__days_to_remove} -print -exec rm -rf "{}" \;
fi
echo
__du=$(read_disk_usage "$DIR")
is_val $__du || _exit $LINENO: Cannot read disk usage properly
echo "Disk usage for: $DIR --- is: $__du %"
__days_to_remove=$(expr $__days_to_remove - 1)
done
## END
Wisisz mi flaszke
WOW, WOW, jeszcze raz WOW.
Jeszcze kilka pytań :
1. czy mógłbym prosić o odrobinę więcej uwag w kodzie (chciałbym go zrozumieć)
2. Ponieważ jest to pierwszy Qnap, nie do końca wiec w jaki sposób zastosować kod
.
3. w jaki sposób mogę przekazać flaszkę?
Jeszcze kilka pytań :
1. czy mógłbym prosić o odrobinę więcej uwag w kodzie (chciałbym go zrozumieć)
2. Ponieważ jest to pierwszy Qnap, nie do końca wiec w jaki sposób zastosować kod
3. w jaki sposób mogę przekazać flaszkę?
- 5 Kwiecień 2008
- 10 205
- 4 730
- 405
- Odznaki
- 205
- QNAP
- TS-x77
- Ethernet
- 1 GbE
1. Instalujesz w App Center dwie aplikacje (w Twoim przypadku wersje: TS-NASX86_64)
2. Za pomocą FAQ SSH łączysz się z serwerem
3. Teraz wgrywasz gdzies na serwer ten skrypt
4. Musisz zmodyfikować w jego nagłówku parametr gdzie znajdują się dane, które chcesz czyścić.
a. W tym celu zainstaluj sobie łatwiejszy do poruszania nawigator/edytor po plikach.
b. Następnie otwórz plik
5. W linijce 6 znajduje się:
Np. jeśli dane znajdują się w udziale sieciowym "Dane" to lokalizacja bedzię odpowiednio:
Jeśli to będzie "Kopie zapasowe" to w tym miejscu powinno być wpisane:
6. Kolejna sprawa to musisz wyłaczyć tryb debugowania.
W linijce 11 przestawić DEBUG na 0:
7. Teraż możesz sprawdzić czy skrypt działa prawidłowo, uruchamiając go:
Skrypt kasuje pliki jeśli wykorzystanie dysku będzie wynosiło 90%. Jeśli ten próg jest za wysoki albo za niski to możesz go zmienić w linijkach 7 i 8:
Ja bym jednak tego nie zmieniał.
8. Teraz ważne jest aby skrypt co minutę sprawdzał ile jest wykorzystanej przestrzeni dyskowej, a więc musisz go dodać do harmonogramu.
Wracasz więc do panelu zarządzania QNAP, wchodzisz w App Center, w którym zainstalowałeś aplikacje Web Crontab (punkt 1) i uruchamiasz ją.
9. Dodajesz nowe zadanie naciskając
Następnie w polach wpisujesz odpowiednio:
Name:
Schedule:
Command:
Naciskasz SAVE.
10. I to tyle.
Jeśli chcesz, to mogę pomóc Ci to zrobić przy użyciu TeamViewera.
2. Za pomocą FAQ SSH łączysz się z serwerem
3. Teraz wgrywasz gdzies na serwer ten skrypt
Bash:
cd /opt
mkdir -p autoclean_older_than
cd autoclean_older_than
wget http://pool.qnapclub.pl/projects/tools/autoclean_older_than/autoclean_older_than.sh
chmod +x autoclean_older_than.sh
4. Musisz zmodyfikować w jego nagłówku parametr gdzie znajdują się dane, które chcesz czyścić.
a. W tym celu zainstaluj sobie łatwiejszy do poruszania nawigator/edytor po plikach.
Bash:
opkg update
opkg install mc
b. Następnie otwórz plik
autoclean_older_than.sh do edycji:
Bash:
mcedit autoclean_older_than.sh
5. W linijce 6 znajduje się:
DIR="/share/Pool/test" należy tutaj wpisać lokalizacje danych, które chcesz czyścić.Np. jeśli dane znajdują się w udziale sieciowym "Dane" to lokalizacja bedzię odpowiednio:
DIR="/share/Dane".Jeśli to będzie "Kopie zapasowe" to w tym miejscu powinno być wpisane:
DIR="/share/Kopie zapasowe"6. Kolejna sprawa to musisz wyłaczyć tryb debugowania.
W linijce 11 przestawić DEBUG na 0:
DEBUG=07. Teraż możesz sprawdzić czy skrypt działa prawidłowo, uruchamiając go:
Bash:
sh autoclean_older_than.sh
Bash:
MAX_DAYS_LIMIT=90 # must be > MIN_DAYS_LIMIT
MIN_DAYS_LIMIT=1 # must be >= 1
8. Teraz ważne jest aby skrypt co minutę sprawdzał ile jest wykorzystanej przestrzeni dyskowej, a więc musisz go dodać do harmonogramu.
Wracasz więc do panelu zarządzania QNAP, wchodzisz w App Center, w którym zainstalowałeś aplikacje Web Crontab (punkt 1) i uruchamiasz ją.
9. Dodajesz nowe zadanie naciskając
Następnie w polach wpisujesz odpowiednio:
Name:
autocleanSchedule:
0 * * * * *Command:
sh /opt/autoclean_older_than/autoclean_older_than.shNaciskasz SAVE.
10. I to tyle.
Jeśli chcesz, to mogę pomóc Ci to zrobić przy użyciu TeamViewera.
- 5 Kwiecień 2008
- 10 205
- 4 730
- 405
- Odznaki
- 205
- QNAP
- TS-x77
- Ethernet
- 1 GbE
To musisz skrypt manualnie wkleić. Albo chociaż przez chwilę podłączyć jakiegoś laptopa z dostępem do internetu jednocześnie i do serwera to wtedy możemy zdalnie zadziałać.
Podobne tematy
- Artykuł
- Odpowiedzi
- 0
- Wyświetleń
- 121
- Artykuł
- Odpowiedzi
- 0
- Wyświetleń
- 165
- Artykuł
- Odpowiedzi
- 0
- Wyświetleń
- 201
- Pytanie
- Odpowiedzi
- 6
- Wyświetleń
- 1K