Verzeichnisstruktur ablegen und mit Datum erweitern
Hallo zusammen,
ich habe mich schon eigene Zeit durch die Angeboten Artikel gewühlt. Aber leider keine wo ich weiter verwenden könnte.
Wie könnte den Batch denn aussehen ?
Aufgabe: Datei In eine Verzeichesstruktur durch einen Punkt getrennt um das Tagesdatum (YYYYMMDD) erweitern werden.
z.B
01/10060746/Test1.001 -----------------> /srv/www/vid/mitglied/0/01/10060746/Test1.001.20080821
01/10060746/Test2.rab -----------------> /srv/www/vid/mitglied/0//01/10060746/Test2.rab.20080821
03/20060746/Test1.001 -----------------> /srv/www/vid/mitglied/0/03/20060746/Test1.001.20080821
03/20060746/Test2.rab -----------------> /srv/www/vid/mitglied/0/03/20060746/Test2.rab.20080821
03/20060746/Test3.pre -----------------> /srv/www/vid/mitglied/0/03/20060746/Test3.pre.20080821
usw.
die Archives Dateien müssen in folgender Verzeichnisstruktur ablegen:
Im Basisverzeichnis "/srv/www/vid/mitglied/0" wird für jeden Mitglied ein Subverzeichnis (Mandantenverzeichnis) angelegt, in Ihrem Fall also des Verzeichnis "0".
Unterhalb des Mitgliedverzeichnis kommen die zum Mitglied gehörigen Betriebsverzeichnisse also z. B. "01","03", etc.In diesen Verzeichnissen liegen alle die Daten, die für die Mitglied eines Betriebs identisch sind.
Sollen für Mitglieder spezifische Daten hinterlegt werden, so erzeugen Sie unterhalb des Betriebsverzeichnis ein mitgliedverzeichnis das die Mitgliednummer als Namen trägt. In dieses Verzeichnis können Sie dann alle Mitgliedspezifische Archiv Dateien wie z.B. die Test1 Test2 datei hinterlegen.
Sie erhalten also folgende Verzeichnisstruktur:
/srv/www/vid/mitglied Basisverzeichnis
0 Mandantenverzeichnis
01 Betriebsverzeichnis
10060746 Mitgliedverzeichnis
Die Archivdateien "Test1.001", "Test2.rab" und "Test3.pre" müssen durch einen Punkt getrennt um das Tagesdatum (YYYYMMDD) erweitern werden bevor Sie in die entsprechenden Verzeichnisse eingestellt werden, z.B. Test1.001.20080821.
Vielen Dank im Vorraus!!
Grüße
Serg
ich habe mich schon eigene Zeit durch die Angeboten Artikel gewühlt. Aber leider keine wo ich weiter verwenden könnte.
Wie könnte den Batch denn aussehen ?
Aufgabe: Datei In eine Verzeichesstruktur durch einen Punkt getrennt um das Tagesdatum (YYYYMMDD) erweitern werden.
z.B
01/10060746/Test1.001 -----------------> /srv/www/vid/mitglied/0/01/10060746/Test1.001.20080821
01/10060746/Test2.rab -----------------> /srv/www/vid/mitglied/0//01/10060746/Test2.rab.20080821
03/20060746/Test1.001 -----------------> /srv/www/vid/mitglied/0/03/20060746/Test1.001.20080821
03/20060746/Test2.rab -----------------> /srv/www/vid/mitglied/0/03/20060746/Test2.rab.20080821
03/20060746/Test3.pre -----------------> /srv/www/vid/mitglied/0/03/20060746/Test3.pre.20080821
usw.
die Archives Dateien müssen in folgender Verzeichnisstruktur ablegen:
Im Basisverzeichnis "/srv/www/vid/mitglied/0" wird für jeden Mitglied ein Subverzeichnis (Mandantenverzeichnis) angelegt, in Ihrem Fall also des Verzeichnis "0".
Unterhalb des Mitgliedverzeichnis kommen die zum Mitglied gehörigen Betriebsverzeichnisse also z. B. "01","03", etc.In diesen Verzeichnissen liegen alle die Daten, die für die Mitglied eines Betriebs identisch sind.
Sollen für Mitglieder spezifische Daten hinterlegt werden, so erzeugen Sie unterhalb des Betriebsverzeichnis ein mitgliedverzeichnis das die Mitgliednummer als Namen trägt. In dieses Verzeichnis können Sie dann alle Mitgliedspezifische Archiv Dateien wie z.B. die Test1 Test2 datei hinterlegen.
Sie erhalten also folgende Verzeichnisstruktur:
/srv/www/vid/mitglied Basisverzeichnis
0 Mandantenverzeichnis
01 Betriebsverzeichnis
10060746 Mitgliedverzeichnis
Die Archivdateien "Test1.001", "Test2.rab" und "Test3.pre" müssen durch einen Punkt getrennt um das Tagesdatum (YYYYMMDD) erweitern werden bevor Sie in die entsprechenden Verzeichnisse eingestellt werden, z.B. Test1.001.20080821.
Vielen Dank im Vorraus!!
Grüße
Serg
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 95028
Url: https://administrator.de/forum/verzeichnisstruktur-ablegen-und-mit-datum-erweitern-95028.html
Ausgedruckt am: 21.04.2025 um 17:04 Uhr
4 Kommentare
Neuester Kommentar
Hallo Serg,
ich habe dir mal etwas zusammengeschrieben. Das Script kopiert den Quellordner (Parameter 1) in einen Zielordner (Parameter 2) und erweitert dabei alle Dateien um das aktuelle Datum.
Das Script kann leider nicht rekursiv kopieren. Möchtest du deine Struktur automatisch kopieren, sag nochmal bescheid.
Das Script produziert folgendes:
Für Ordnerstrukturen müsstest du alle ordner inkl. unterordner per ls auflisten, dateien Filtern, dateinamen erweitern und die ordner im zielpfad anlegen. Dauert mit jetzt zu lange
.
ich habe dir mal etwas zusammengeschrieben. Das Script kopiert den Quellordner (Parameter 1) in einen Zielordner (Parameter 2) und erweitert dabei alle Dateien um das aktuelle Datum.
Das Script kann leider nicht rekursiv kopieren. Möchtest du deine Struktur automatisch kopieren, sag nochmal bescheid.
#!/bin/bash
# Parameter 1: zu kopierender Ordner
# Parameter 2: Zielpfad
#
if [[ -d $1 && ! -z $1 ]]; then # PARM1 testen
if [[ -d $2 && ! -z $2 ]]; then # PARM2 testen
erweiterung=$(date +%Y%m%d) # Datum bereitstellen
ls -1 $1 | while read a; do # Ordnerinhalt listen
cp -v $1/$a $2/$a.$erweiterung # Dateien kopieren
done
else
echo FEHLER 2 - Zielordner nicht vorhanden oder nicht angegeben
exit 1
fi
else
echo FEHLER 1 - Quelle nicht Vorhanden oder nicht angegeben
exit 1
fi
Das Script produziert folgendes:
./datumskopie.sh /home/USER/datum /tmp/datum
`/home/USER/datum/test1' -> `/tmp/datum/test1.20080822'
`/home/USER/datum/test1.000' -> `/tmp/datum/test1.000.20080822'
`/home/USER/datum/test1.002' -> `/tmp/datum/test1.002.20080822'
`/home/USER/datum/test1.test' -> `/tmp/datum/test1.test.20080822'
`/home/USER/datum/test1.zip' -> `/tmp/datum/test1.zip.20080822'
Für Ordnerstrukturen müsstest du alle ordner inkl. unterordner per ls auflisten, dateien Filtern, dateinamen erweitern und die ordner im zielpfad anlegen. Dauert mit jetzt zu lange
Ich habe gerade noch ein wenig probiert. Du kannst einfach mit find alle Verzeichnisse im Quellpfad suchen, den passenden ordner im Zielpfad anlegen (wenn nicht vorhanden) und für den jeweiligen Ordner das obige Script ausführen. Ein ansatz währe:
# Parameter1: Mitgliedsname
QUELLPFAD=/var/projekte
ZIELPFAD=/srv/www/vid
find $QUELLPFAD/$1/* -type d | while read f; do
ORDNER=$(echo $f | cut -b 2-)
...
CODE HIER ERGÄNZEN :-)
...
done
1) In deinem Beispiel kopierst du alle Dateien, die hinter dem Verzeichnis Datum hinterlegt sind . Muss ich die gleiche Datenstruktur sowohl auf dem Quellpfad als auch auf dem Zielpfad benutzen?
Jepp. Das script sollte alle DATEIEN im Ordner $1 (ERSTER PARAMETER BEI SCRIPTAUSFUF!) nach $2/dateiname.datum kopieren. $2 (Zweiter Parameter bei Scriptaufruf)
Startest du also datum.sh mit den Parametern projekt211 projekt 123, kopiert das Script alle Dateien im Ordner projekt211/* nach projekt 123/*.datum.
Habe es gerade nochmal auf einer SuSE Kiste probiert. Läuft.
2) Kann ich alles was zum Beipiel hinter /projekte/ hinterlegt ist, auf einen Schlag auf den Zielpfad kopieren? und dies gleichzeitig mit Datum erweitern?
Das zweite Script sollte das erledigen. Es sollte im ordner $QUELLE/$1 alle Unterordner auflisten und in der While-Schleife durcharbeiten. Hier könnte das 1. Script aufgerufen werden. Ich wollte dir nur eine Möglichkeit und keine Lösung präsentieren, damit du auch etwas dabei lernst