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
- 2185 megtekintés
Hozzászólások
#!/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
- A hozzászóláshoz be kell jelentkezni
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 :)
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
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 :)
- A hozzászóláshoz be kell jelentkezni
Az Adatok nevű alkönyvtárból futtatva ez kell neked.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
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.)
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
nekem is át kellett olvasni vagy 3x, de épp nagyon ráértem :)
(már ha jól értettem persze)
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni