Portál AbcLinuxu, 4. prosince 2025 12:09
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
done
Lepší 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.