Frage von JOberst, 33

Wie kann ich die Struktur eines Verzeichnisses kopieren?

Hallo! Ich würde gerne eine Datei erzeugen, die die Dateistruktur beispielsweise eines externen Laufwerks beinhaltet. Also nicht den INHALT des Laufwerks, sondern nur die Dateinamen mit Endung und Pfad, am besten auch noch Größe, Datum, etc. Wie heisst so etwas, bzw. wonach muss ich suchen? Mein System ist ein Ubuntu, aber da bin ich flexibel.

Antwort
von PhotonX, 9

Schau mal hier: http://stackoverflow.com/questions/14223233/list-all-directories-recursively-in-... Einmal laufen lassen und in eine Text-Datei pipen:

find ./ -type d -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g' > contents.txt
Expertenantwort
von guenterhalt, Community-Experte für Computer & Linux, 9

ein Teil ist ganz einfach mit copy.

Hier als Beispiel:

cd /tmp
mkdir jOberst
cd <MountPoint-mein-externes-Laufwerk>
cp -R -p --attributes-only * /tmp/jOberst

unter /tmp/jOberst findest du eine vollständige Kopie aller Verzeichnisse (durch -R als Option) und Dateinamen. Mit -p  werden auch alle Zeitstempel übernommen.

Nicht möglich ist die Übernahme der Dateigrößen, denn die werden durch

--attributes-only

nicht übernommen. Die muss man dann schon im original-Datenträger ansehen oder aber dort mit  ls -lR  > Datei
eine Datei anlegen, die dann auch die Größen enthält.

In /tmp/jOberst kannst du dich mit cd so bewegen wie im gemounteten externen Laufwerk.

Expertenantwort
von Linuxhase, Community-Experte für PC, 2

Hallo

Ich würde gerne eine Datei erzeugen, die die Dateistruktur beispielsweise eines externen Laufwerks beinhaltet. Also nicht den INHALT des Laufwerks

tree mit entsprechenden Parametern ist das geeignete Programm für diese Aufgabe würde ich mal sagen, zum Beispiel so:

tree -Ralf > struktur.txt

Sieht dann so aus:

tree -RalfF Linux_System/
Linux_System
├── Linux_System/bin/
├── Linux_System/boot/
├── Linux_System/dev/
├── Linux_System/etc/
├── Linux_System/home/
│   ├── Linux_System/home/user1/
│   │   └── Linux_System/home/user1/Dokumente/
│   │   └── Linux_System/home/user1/Dokumente/Tabellen/
│   └── Linux_System/home/user2/
├── Linux_System/lib/
├── Linux_System/lib64/
├── Linux_System/lost+found/
├── Linux_System/media/
├── Linux_System/minthome/
├── Linux_System/mintroot/
├── Linux_System/mnt/
├── Linux_System/opt/
├── Linux_System/proc/
├── Linux_System/root/
├── Linux_System/run/
├── Linux_System/sbin/
├── Linux_System/selinux/
├── Linux_System/srv/
├── Linux_System/sys/
├── Linux_System/tmp/
├── Linux_System/usr/
├── Linux_System/var/
└── Linux_System/windows/

28 directories, 0 files

Linuxhase

Antwort
von ArchEnema, 20

Probier mal

ls -lR <pfad>

Dabei hast du aber dann nicht die ganzen Dateipfade, sondern immer erst den Verzeichnisnamen und dann alle enthaltenen Dateinamen.

Möglicherweise ist dir

find <pfad>

lieber. Da gibt's dann aber nur die (kompletten) Pfade, keine Dateiattribute. Aber das kriegt man so hin (listet nur "reguläre" Dateien, keine Symlinks oder Verzeichnisse):

find <pfad> -type f -exec ls -la \{\} \;


Bitte jeweils <pfad> durch den Pfad zu deinem Laufwerk/Verzeichnis ersetzen.

Antwort
von Denno2015, 33

Nur zum richtigen Verständnis. Du willst lediglich die "Merkmale" der Daten kopieren ohne die Daten aber selber zu kopieren?

Kommentar von JOberst ,

Genau, am besten nach den unterschiedlichen Kriterien sortierbar, also in einer Tabelle o.ä. - wenn ich z.B. 300 GB an Musik habe will ich nur eine Datei in der ich z.B.  finde wo genau der Michael Jackson - Ordner ist oder wieviele Unterverzeichnisse bei den Toten Hosen existieren.

Kommentar von Denno2015 ,

Also anzeigen kannst du dir alle Dateien in einem Ordner. Das geht mit dem Befehl ls  und ausgeben in eine Datei geht mit cat

Dann speichert der dir alles in einer Textdatei die du benennen musst nach cat.

Kommentar von JOberst ,

also muss ich wahrscheinlich ein skript schreiben, dass rekursiv durch alle unterverzeichnisse gehr und jeweils die attribute in eine spalte schreibt, richtig? eigentlich müsste es für sowas doch tools geben.

Kommentar von Denno2015 ,

Denke, dass das der richtige Weg ist ja. Ich kenne zumindest auf Anhieb jetzt kein Tool was ich empfehlen könnte. Denke auch nicht das der Befehl lsattr dir weiterhelfen würde. https://wiki.ubuntuusers.de/chattr

user@user-VirtualBox:~$ lsattr
-------------e-- ./text.txt
-------------e-- ./Schreibtisch
-------------e-- ./Bilder
-------------e-- ./Dokumente
-------------e-- ./Downloads
-------------e-- ./Öffentlich
-------------e-- ./examples.desktop
-------------e-- ./Vorlagen
-------------e-- ./Videos
-------------e-- ./Musik
Antwort
von creator78, 27

Ich glaube hier wird dich keiner so richtig verstehen können. Du könntest vielleicht alles einfach kopieren und danach aus der Kopie die Inhalte löschen.

Kommentar von Denno2015 ,

Ich verstehe schon was er meint, nur fällt mir spontan keine wirkliche Lösung für das Problem ein.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten