Inhalt vieler Verzeichnisse in ein Verzeichnis verschieben

Hinweis: In dem Thema Inhalt vieler Verzeichnisse in ein Verzeichnis verschieben gibt es 40 Antworten auf 5 Seiten. Der letzte Beitrag () befindet sich auf der letzten Seite.
  • Code
    mv /pfad_zum_originalordner/*/* /pfad_zum_originalordner/

    warum nicht gleich so?
    Und dann mit rm die leeren Quellordner löschen?


    Ich habe das gerade an einigen Probedaten getestet. Es funktioniert. Ich habe das Problem von @Kuddenberg auch (allerdings mit nur einigen tausend Dateien) und hab es bisher verdrängt. Ich hatte mal die manuellen 'Verflachung' angefangen aber bald wieder aufgegeben.


    Jetzt ist das Problem gelöst !

    Für den Inhalt des Beitrages 103307 haftet ausdrücklich der jeweilige Autor: senior53


  • Die Verzeichnisstruktur soll auf Null abgeflacht werden.

    Code
    find . -type f -print0 | xargs -0 -I%%% cp %%% ORDNER_MIT_ALLEN_DATEIEN

    Nun also egal wie Du "auf Null abflachst". 1 Bedingung ist dann natürlich Eindeutigkeit der Dateinamen.
    Das Verfahren mit xargs ist tatsächlich limitiert. Bin ich auch schon drüber gestolpert bei vielen Dateien im Verzeichnis.


    Falls Du -warum auch immer- darauf angewiesen bist, selektiv zu moven- was mir bei der Zielvorgabe nicht einleuchtet-, baue zusätzliche Kriterien ein, die zu handhabbaren Größen führen. Z.B. Datum oder was auch immer.
    Oder generiere script files mit expliziten mv Befehlen.


    Vom Prinzip sollte es jedenfalls recursiv oder iterativ per Script gehandhabt werden, wenn nicht ein simples mv verwendet werden kann.

    Für den Inhalt des Beitrages 103311 haftet ausdrücklich der jeweilige Autor: Tar Zahn

  • Achso.
    Du kopierst 720000 TB und wunderst dich, dass der Platz nicht reicht auf 2 TB?
    Komisch.
    :S
    Klare Sprache dient der Sache.
    Man könnte deine Angabe ja auch so interpretieren, dass jede Datei ein paar GBs haben könnte, wo doch die Wörtchen "insgesamt" und "jeweils", passend eingestreut, hätten Klarheit schaffen können.


    Das Kommando ist ziemlich sinnlos.
    Es copiert die Dateien, statt sie zu verschieben.
    Aber das ist dir ja klar.


    Und hilft in deinem Fall auch nicht wirklich weiter, wie die vorgeschlagenen Lösungen ebensowenig.
    (Sonderlich robust sind sie auch nicht.)


    Es mag ja sein, dass du mit diesem Vorhaben an prinzipielle Grenzen deines eingesetzten Dateisystems stößt.
    Da wären zuvorderst die maximale Anzahl an Inodes pro directory zu nennen, oder, oder, oder.


    Da du nach einer Lösung suchst, die du öfter verwenden möchtest, wäre die Anzahl der Dateien im "verflachten Directory" von Interesse, ebenso, wie das verwendete Dateisystem (samt dessen Konfiguration, falls du da beim Formatieren an den Standards geschraubt hast).


    Außerdem wäre auch die Frage, was bei gleichnamigen Dateien in verschiedenen Unterverzeichnissen passieren soll.
    Welche soll da dann welche warum überschreiben? Oder doch lieber einen $RANDOM Teil dem Namen anfügen?
    Und wieviele Unterverzeichnisse es überhaupt geben kann, wäre auch zu wissen wichtig.


    Man könnte da, um all solche Fallen zu umgehen, und das Script bis an die faktischen Grenzen des Dateisystems lauffähig zu halten, recursiv vorgehen.


    Wenn du die Fragen diesmal genügend beantwortest, kriegst auch Script, das tut.

  • Servus,


    ich bin noch etwas im Fieberwahn, daher vielleicht eine etwas unpassende Formulierung.


    Um etwas Licht ins Dunkel zu bringen. Die Dateien beinhalten Werte von einem Messgerät. Bisher wurden die Daten recht "sorglos" auf dem Gerät selber gespeichert. Es gibt aber dummerweise gewisse Aufbewahrungsrichtlinien, da es sich um Messwerte sicherheitsrelevanter Fahrwerksteile von diversen Autobauern handelt. Die sind da aus diversen Gründen etwas ungehalten, wenn man denen erzählt, dass es über sehr lange Zeit keinerlei Datensicherung gab.


    Die Vergabe der Dateinamen ist eindeutig.


    Übrigens ergibt sich bei der Nutzung von mv mit der kleinen Befehlszeile von mir das gleiche Bild. es dauert allerdings länger, bis die Information "Speicher voll" kommt.


    So oder so wäre es doch mal interessant zu wissen, warum der Fehler kommt.


    Viele Grüße
    Kuddenberg

    Für den Inhalt des Beitrages 103316 haftet ausdrücklich der jeweilige Autor: Kuddenberg

  • Na, dann geh mal wieder in die Heia,
    bis du meine Fragen beantworten kannst.


    Wenn du genügend fit bist, könntest du dann sogar eine mögliche Antwort aus meinen bisherigen Posts lesen.


    Aber ohne die geforderte Info, wird das nix.


    Schön, dass die Namen festliegen.
    WELCHE DENN? UND WELCHES SCHEMA?
    (nicht die Fragen bezüglich des Dateisystems, Größe usw. vergessen!!)

  • Ok, Fieber erklärt natürliche einiges, aber nun möchte ich @Berichtigung doch Recht geben.
    Vorschlag: Antworten lesen und Fragen beantworten, möglichst deutlich (beides) wäre eine Maßnahme, mit der Du Dein Anliegen stark unterstützen könntest.


    ".. bei der Nutzung von mv mit der kleinen Befehlszeile von mir.."
    Was soll das bedeuten? Deine kleine Befehlszeile ist sehr wahrscheinlich das Problem, sie mit anderen Befehlen zu kombinieren nicht hilfreich. Und wenn doch, dann schreib doch einfach deine Versuche hier hin. 1 zu 1 und mit Fehlerausgabe.


    Wieso Du genau diese "kleine Befehlszeile" benutzt, was Du damit erreichen möchtest, warum die Vorschläge aus dem Forum nicht in Frage kommen, hast Du auch noch nicht erläutert. Die Erklärung mit den Autobauern ist spannende Prosa, aber enthält keinen informativen Nährwert.

    Für den Inhalt des Beitrages 103319 haftet ausdrücklich der jeweilige Autor: Tar Zahn

  • Code
    mv /pfad_zum_originalordner/*/* /pfad_zum_originalordner/

    Und was passiert mit diesem ganz einfachen Befehl (Version von @senior53)? Wenn die Dateinamen eindeutig ist auch dieser Problemfaktor weg.


    Ist die Lösung zu einfach? Ja - komplizierter braucht eben nicht ..


    Im absoluten Notfall kannst du einfach mal einen Testordner mit einigen deiner Daten erstellen und du wirst sehen wie flott und sicher das geht ..

    There's no place like 127.0.0.1

    Für den Inhalt des Beitrages 103329 haftet ausdrücklich der jeweilige Autor: wurzel99

  • Ach, Wurzel!!


    Das eigentliche Problem ist NICHT der Befehl, oder dessen Dauer,
    sondern trotz ausreichend Platzes, ein Fehler, dass kein Platze wäre.
    Und das schon die ganze Zeit.
    (Ich sonst ein paar Zeilen geschrieben, die das Problem sicher und kompatibel universell lösen)


    Die Befehle sind natürlich mögliche Lösungen.
    Aber mit Einschränkungen.
    Keine davon entspricht der Linuxmentalität:
    Mache einen Job, nur einen einzigen kleinen Job, den aber richtig gut.
    Richtig gut und von allen anderen nutzbar.


    Und das ist nun mal komplizierter, als schlichte Lösungen.


    Aber nochmal: Es geht hier NICHT um das WIE.
    Es geht um ein prinzipielles Problem, das vermutlich mit dem Dateisystem selbst zusammenhängt.