Szeretnék rsync-et mélyebben használókkal körbejárni egy jelenséget, amibe most botlottam bele.
Egy szerver teljes mentése évek óta stabilan és megbízhatóan zajlik az rsync programmal.
Ám az éles szerveren egy letörölt mappa a backup területen továbbra is elérhető.
Az rsync root joggal fut, a következő kapcsolókkal:
rsync -aHvz --delete --numeric-ids root@{forrás} {cél}
Az rsync a másolás során a "cannot delete non-empty directory" hibaüzenetet adja, vagyis észleli, hogy a mappát törölnie kellene, de nem tudja, mivel annak tartalma van. A tartalma azonban csak két normál fájl, és innentől nem igazán értem a jelenség okát. Főleg azért, mert a teljes szerver mentésében ez az egyetlen ilyen hiba. Általában le tudja szinkronizálni a mappák törlését. A jogosultságok sem zavarhatják, mert root joggal fut.
Egyedüli érdekesség, hogy a törlésre került mappa szülőmappája az éles és a mentés szerveren is azonos dátumú. Pedig, ha egyszer törlésre került a szerveren a mappa, akkor a szülőmappa dátumának meg kellett volna változni. Vagy lehet, hogy azt leszinkronizálta az rsync, annak ellenére, hogy a benne lévő mappát nem tudta törölni?
Hozzászólások
Szia, nem lehet, hogy az rsync futása pillanatában éppen nyitott fájl volt, és ezért nem tudta törölni? Te le tudod törölni?
A file rendszer rendben van, futtattál check-et?
Sakk-matt,
KaTT :)
Köszönöm, az ötlet jó, de sajnos nem. Egyrészt én le tudom törölni. Le is töröltem. Másrészt ezek csak archív fájlok, amik régen elkészültek már. Egyébként évek óta zajlik így a mentés, és évek óta nem sikerül szinkronizálnia ennek a mappának a törlését. Minden alkalommal ugyanez a hibaüzenet.
Szerintem már fájlrendszerellenőrzés is volt, de azt azért még meg fogom próbálni.
Ha nem Windows alatt használod, hanem pl. Linux alatt, akkor nyitott fájlokat is nyugodtan le lehet törölni egy könyvtárból.
MEGOLDVA
A tömörség kedvéért a nyitó postban nem soroltam fel az rsync --exclude paramétereit.
Ha az rsync --exclude paraméterei között van olyan mappa, amit törölni kellene a szinkronizációhoz, akkor a --delete kapcsoló nem tudja törölni.
És lőn, valóban a kérdéses mappa benne volt az --exclude paraméterek között.
Akkor kiderült, hogy nem bug, hanem feature! :)
Sakk-matt,
KaTT :)
Ne de ha benne volt az exclude paraméterei között, akkor miért másolta át egyáltalán, valamikor korábban?
--delete-excluded
or was