Portál AbcLinuxu, 7. května 2025 22:40
Zdravím!
Pro určité adresáře bych potřeboval provést přibližně toto:
Poslední bod je jasný, to lze vyřešit jednoduše v cronu, ale co to ostatní? Existuje na to nějaké udělátko, příp. lze tohle nějak jednoduše ubastlit s pomocí standardních nástrojů (např. rsync, či tak nějak)? Někdo nějaký nápad.
Řešení dotazu:
while true; do for i in `find "$TMPDIR" -mmin +1 -mmin -10 -type f`; do # mmin je tady kvůli tomu, abych nesebral soubory, do kterých je ještě zapisováno a tedy mohou být pouze částečné cp "$i" "$DESTDIR"/"$i".`date +%s` done sleep 5m doneLepší by bylo kontrolovat, že ten soubor již nemám, pomocí
sha1sum `ls dir/soubor.*|tail -n 1`
a porovnáním se souborem z $i
.
#!/bin/bash DIRS="$HOME" for D in $DIRS; do Z="$D/.auto_zaloha" mkdir -p "$Z" if test -f "$Z/.stamp" ; then rm -f $Z/.stamp.prev mv $Z/.stamp $Z/.stamp.prev touch $Z/.stamp DT=`date +%Y.%m.%d-%H:%M:%S` ( cd $D find * -maxdepth 0 -type f ! -iname ".*" -size -7M -newer "$Z/.stamp.prev" -exec cp {} $Z/$DT-{} \; ) # clear files older than 15 days... find $Z -type f ! -iname ".*" -mtime +14 -exec rm {} \; 2>/dev/null else touch $Z/.stamp fi done
Je tam pár detailů šitých na míru (velikost souboru pod 7M) atd...
Keď sa sleduje adresár a nie konkrétny súbor, tak by s tým problém nemal byťTo zní jakoby se adresáře nemohly vytvářet a mazat.
rovnako, ako pri všetkých nástrojoch používajúcich inotifyProblém není v inotify, nýbrž v incrond.
A co tohle?
protoze se da rict systemu/aplikacim, ze maj pozastavit zapis a ulozit konzistentni stav.Jak řekneš všem aplikacím, aby uložily konzistentní stav a řekly ti, až to budou mít?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.