egy gnu/linux particióról kell rendszeresen mentéseket végezni egy másik vinyóra. a probléma, hogy a tar valamiért 2x 3x is belerakja az archivba ugyanazokat a könyvtárakat. mivel a mountolt particiókat természetesen nem akarom bakcupolni ezt a parancsot használtam,
find / -mount -print0 | xargs -0 tar -cf `date '+%d%m%Y'_archive.tar`
az archiv állomány mérete is többszöröse a root particióénak.
miért kerül bele többször az archiv állományba ugyanaz a file?
- 926 megtekintés
Hozzászólások
A kérdés, hogy a find miért adja át mindegyik fájlt többször. Első gondolatom a szimbólikus linkek voltak. Dehát az alapértelmezett viselkedés, hogy nem követi őket (-P). Esetleg próbáld meg explicit megadni a -P kapcsolót a find-nak. A másik, hogy nincs-e valahol egy bind-elt mount a fájlrendszeren?
Üdv,
Dw.
"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."
- A hozzászóláshoz be kell jelentkezni
biztosan nem ez az ok, mert a sosem linkelt alkönyvtárakat is duplázza, triplázza.
és kipróbáltam csak a home könyvtáron is és hasonló lett az eredmény.
a P kapcsolót érdemes megadni, de sajnos nem oldja meg a problémát.
- A hozzászóláshoz be kell jelentkezni
A root partíciót akarod lementeni, a felcsatoltakat meg nem?
- A hozzászóláshoz be kell jelentkezni
igen. ezért adtam meg a findnak a mount opciót.
- A hozzászóláshoz be kell jelentkezni
Mivel így a find megadja a /-t is plusz még az összes mountpointot, csak az alájuk bemountolt tartalmat nem, ezért a tar megkapja paraméterként. Erről a megkapott könyvtárnévről nem tudja, hogy nem kell az alatta lévőket is archiválni, így menti először a /-t rekurzívan, és mindezek után a többi paraméterként kapott file-t. Sőt, mivel az összes könyvtárnevet is külön felsorolja, ezért a mentett file-ok sokszorozódása a könyvtárszerkezeten belül elfoglalt helyüktől függ, azaz a /dir1/dir2/dir3/dir4/a hatszor kerül mentésre. Nézd meg a tart a --one-file-system opcióval, ez egyben feleslegessé teszi a find használatát is.
tar --one-file-system -cf `date '+%d%m%Y'_archive.tar` /
- A hozzászóláshoz be kell jelentkezni