Biztonsági mentés, könyvtár léptetéssel

 ( kalmarr | 2015. október 5., hétfő - 12:20 )

Sziasztok,

a következőt szeretném megoldani. Szeretnék egy biztonsági mentéses BASH file-t készíteni.

A problémám a következő:

Könyvtár szerkezet:
>Adatok
-adat1
|
---állandó
|
-adat2
---állandó

A kérdésem, hogy az adatok alatt lévő összes könyvtárat, hogyan lehetne, úgy lépésenként elmenteni, hogy csak az állandó könyvtár tatalmát mentsem el (a nehézség, hogy nem tudom hány darab és mi a neve az "adat1" könyvtáraknak?

pl: adat1.zip -> tartalma adat1 alatt lévő állandó könyvtár és tartalma.

A nem szép megoldás, ha folyamatosan bővítem a könyvtár listát, de engem az érdekelne, hogy a könyvtár neveket, lépésenként be lehet-e olvasni, ha igen, hogyan?

Köszi!

Kalmi

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.


#!/bin/bash

while read; do
    [ ! -d "$REPLY" ] && continue
    echo "Tömörítem: $REPLY" >&2
    tar -cJf "${REPLY}.tar.xz" "$REPLY"
done < <(ls -1)
exit

Úgy nagyjából. Bár nem igazán világos, mit szeretnél. Van egy kivétel listád is, és azt nem?


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Az adatok könyvtárban minden könyvtárból kell csak az állandó könyvtár. Kivétel nincs. Az adat1 könyvtár alatt lévő könyvtárak pedig nem kellenek (csak az állandó).

Remélem sikerült leírni a problémát :)

Ne haragudj, de nem értem. Arra kérlek, a magyar nyelv szabályai szerint, megfelelő központozással fogalmazz. Írásjelek, vesszők a helyükön legyenek, ezen felül picit részletezd, mert nem világos.

Eleve hogyan lehet két azonos nevű alkönyvtár egy könyvtárban? Jó, mondjuk nem azonos nevű, de akkor a példa is efféle, kicsit konkrétabb legyen.

Ha nincs kivétel, az a script, amit írtam, nem jó?


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

+1

Ok. Na akkor neki esek megint és bocs a kezdő fogalmazásomért, a hajnali telepítés ;)

- Van egy gyökér könyvtár: Adatok
- Ebben a könyvtárban vannak az: adat1; adat123, adatabc; adatxyz - "változó nevű könyvár", könyvtárak.
- A változó nevű könyvtárak mindegyikében pl: adat1-ben. Egy dolog 100%-osan van: állandó - "nevű könyvtár" (most nézem elcsúszott az első leíráson a szóköz). Ezeket az állandó nevű könyvtárakat szeretném lementeni, mindegyik változó nevű könyvtárból. pl: "'változó könyvtár'.tar.xz"- "'változó könyvtár'.tar.xz" (értelemszerűen ez a file az adott változó nevű könyvtár állandó könyvtárát, illetve az alatta lévő struktúráját (könyvtárak és fileok) tartalmazza).

Remélem most már jól összefoglaltam.

Nagyon köszönöm a sok segítséget :)

Az Adatok nevű alkönyvtárból futtatva ez kell neked.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Ha jól értem a feladatot, akkor ezt szeretnéd:
- veszed a könyvtárakat (pl. adat1, adat2, stb.)
- ha van van-e benne "állandó" nevű alkönyvtár, akkor ennek az alkönyvtárnak tartalmát betömöríted az előző pontban talált dir nevével.

Ezt szeretnéd? Ha igen, locsemege megoldását triviális átírni:

#!/bin/bash

while read; do
[ ! -d "$REPLY/állandó" ] && continue
    echo "Tömörítem: $REPLY" >&2
    tar -cJf "${REPLY}.tar.xz" "$REPLY/állandó"
done < <(ls -1)
exit

(Most tekintsünk el attól az apróságtól, hogy ez XZ-t gyárt és nem zip-et, ha ez nem tetszik akkor írd át nyugodtan.)

Valószínűleg tényleg ezt akarhatta, csak olyan nyakatekert szórenddel fogalmazott, hogy nem esett le elsőre, ráadásul félrevezető volt a fa struktúra, amit rajzolt. Persze lehet, hogy a fórum lenyelte a szóközöket, de használt volna nem törő szóközt.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

nekem is át kellett olvasni vagy 3x, de épp nagyon ráértem :)
(már ha jól értettem persze)

Többeknek is az a problémája, hogy a kérdés sem világos. Tán a kérdezőnek sem. ;) Viszont ennek ellenére már több script is megszületett! :(

Javaslom a probléma részekre bontását! Így a kérdés is megviláglik, a megoldás is megszületik.

1) Az adatok struktúráról készítsünk egy listát!
Ez lesz a "munka tárgya" nagy vonalakban.
Erre alkalmas a find, esetleg némi kiegészítéssel.
El lehet rakni a következő adatokat (pl.):
- full path
- basename
- size
- mtime
- type - ha ilyen értelmezhető

2) A listából ki kell válogatni azokat az ojjektumokat, amivel dolgozni szeretnénk!
Így megmaradnak azok az elemek, amelyekkel ténylegesen dolgozni kell. A válogatás szempontjait az egyes elemekről összgyűjtött adatok alapján lehet kiszűrni.

3) A fentiek szerint előállt lista alapján el kell végezni a feladatot!
Ami természetesen lehet archiválás, törlés stb.

Az így előállt elemeket össze lehet fogni egy pipeline-ba, hogy szép unix-szerű legyen. ;)

Mottó: Mint a "Sakál napjában" - hol, mikor, hogyan?