alles außer x kopieren

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von pospiech, 28.06.2006.

  1. #1 pospiech, 28.06.2006
    pospiech

    pospiech Doppel-As

    Dabei seit:
    29.07.2003
    Beiträge:
    112
    Zustimmungen:
    0
    Ich möchte über ein Skript Sicherungen anlegen. Dabei möchte ich alle Verzeichnisse und Dateien inklusive der mit "." startenden Dateien kopieren, zusätzlich aber wenige Verzeichnisse, z.B. ".kde/" auslassen.
    Ein "cp .*" führt dazu das auch "." und ".." miteinbezogen werden. Damit kann ich wohl nicht arbeiten.

    Wie kann man daher derartige Kopieraktionen anweisen ?

    Matthias
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 damager, 28.06.2006
    damager

    damager Moderator

    Dabei seit:
    27.08.2003
    Beiträge:
    3.065
    Zustimmungen:
    0
    Ort:
    Munich
  4. #3 phrenicus, 28.06.2006
    phrenicus

    phrenicus Routinier

    Dabei seit:
    24.05.2006
    Beiträge:
    253
    Zustimmungen:
    0
    Ort:
    Tübingen, Germany
    Ein * steht für beliebig viele Zeichen, ein ? für exakt eins.
    Also könnte man es mit einem Konstrukt lösen, das .??* heißt (vorausgesetzt, nach dem Punkt kommen immer mindestens zwei Zeichen und Du nennst Deine Verzeichnisse nicht .a oder so).

    Gruß
     
  5. #4 Xanti, 28.06.2006
    Zuletzt bearbeitet: 28.06.2006
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    ls -A liefert alles ausser . und ..
    Man könnte das ganze mit grep verbinden, so etwa

    Code:
    ls -A | grep -v .kde | xargs cp {} /backup
    
    Gruss, Xanti
     
  6. #5 pospiech, 28.06.2006
    pospiech

    pospiech Doppel-As

    Dabei seit:
    29.07.2003
    Beiträge:
    112
    Zustimmungen:
    0
    Wie kann ich denn hierbei mehere Argumente übergeben. Mir ist nur eingefallen beliebig viele grep hintereinander zu kombinieren, was mir aber zu umständlich ist.

    Dann wüsste ich gerne noch wie ich alle Verzeichnisse auswähle. Ein 'ls -d' liefert mir immer nur "."

    Matthias
     
  7. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Da würde ich find empfehlen:

    Code:
    find . -maxdepth 1 -type d -not -name bla -not -name blabla -exec cp {} /backup \;
    
    Zur Not xargs benutzen, wenn die Anzahl der gematchten Verzeichnisse zu gross wird.
     
  8. #7 pospiech, 29.06.2006
    pospiech

    pospiech Doppel-As

    Dabei seit:
    29.07.2003
    Beiträge:
    112
    Zustimmungen:
    0
    Neues Problem:

    Code:
    cd /usr/local/share/fonts/
    ls /usr/local/share/fonts/ | xargs cp {} /home/matthias/SystemSicherung/fonts/
    
    liefert nur "ul9ro8a.pfb is not a directory"
    was ich nicht verstehe.

    Matthias
     
  9. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Zur Datensicherung solltest Du nicht cp alleine benutzen. Schau Dir mal rsync an. Dort kannst Du mit der Option '--exclude-from=file' in die Datei 'file' die Pfade/ Dateien eintragen, die nicht mitkopiert werden sollen.
    Ausserdem kannst Du, wenn Du jeden Tag/ jede Woche in ein anderes Verzeichnis sicherst, mittels '--link-dest' angeben, wo das alte Backup liegt, und es werden nur die geaenderten Dateien kopiert. Auf die ungeaenderten werden hard-links gesetzt, was Platz spart.
     
  10. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Hmm, bist Du Dir sicher, dass er nicht "ul9ro8a.pfb is a directory" meint? Diese musst Du mit cp -r rekursiv kopieren.

    Gruss, Xanti
     
  11. #10 pospiech, 29.06.2006
    Zuletzt bearbeitet: 29.06.2006
    pospiech

    pospiech Doppel-As

    Dabei seit:
    29.07.2003
    Beiträge:
    112
    Zustimmungen:
    0
    Ich erklär vielleicht mal was ich damit bezwecken will. Jedemal wenn ich den Rechner (bzw die Rechner) neu installiere, dann will ich vorher /etc/, alle versteckten Dateien in home, .kde in home .texmf in home, .cxoffice in home, alle fonts in /usr/local/share/fonts/, alle Skripte in ~/bin/ aber nicht die Unterverzeichnisse
    gesammelt sichern, und das auf allen Rechnern. Und das würde ich gerne mit einem Skript erledigen.

    Es handelt sich daher wirklich nur um Kopieraktionen, die sich nur leider mit cp alleine nicht erledigen lassen. Dafür mich in rsync einzuarbeiten erscheint mir overkill, zumal ich es eigentlich gestern fertig haben wollte, nur leider wegen diverser Probleme nicht vorankommen, wie z.B., das cp nicht kopiert, oder ls -d mir keine Verzeichnisse anzeigt.

    ja ganz sicher. Das Verzeichnis enthält nämlich keine Unterverzeichnisse, weshalb ich kein cp -r machen bräuchte.

    Matthias
     
  12. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Vielleicht solltest Du Dir die man-Page von ls und cp nochmal ganz genau durchlesen.
     
  13. #12 pospiech, 29.06.2006
    pospiech

    pospiech Doppel-As

    Dabei seit:
    29.07.2003
    Beiträge:
    112
    Zustimmungen:
    0
    Nicht das ich die schon gelesen hätte. Was willst du mir genau sagen ?

    Matthias
     
  14. #13 phrenicus, 29.06.2006
    phrenicus

    phrenicus Routinier

    Dabei seit:
    24.05.2006
    Beiträge:
    253
    Zustimmungen:
    0
    Ort:
    Tübingen, Germany
    pospiech,

    Du willst vor dem neu installieren sichern, und das (Zitat: auf allen Rechnern). Glaub mir, es lohnt sich, sich entweder mit rsync oder mit tar oder mit beidem eingehend zu beschäftigen. Eine Quick&Dirty-Lösung mit cp ist nicht das richtige. Glaub mir, Du willst das richtig machen und Du willst es sauber haben, spätestens wenn Du die Daten nach der Neuinstallation wieder zurück spielst. tar ist nicht unbedingt die schlechteste Wahl: hier kannst Du beispielsweise eine Liste angeben, die ausgeschlossen werden soll:

    Code:
    server:/home # tar cf sicherung.tar * --exclude-from=/home/exclude 
    In dem File /home/exclude kannst Du alles eintragen, was Du ausschließen willst. Dasselbe gilt für rsync.

    Ich empfehle das dringend.


    Gruß
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 pospiech, 29.06.2006
    pospiech

    pospiech Doppel-As

    Dabei seit:
    29.07.2003
    Beiträge:
    112
    Zustimmungen:
    0
    Ich bastel auch schon an einer Lösung mit tar. Dafür muss ich mir jetzt nur noch die exclude Listen zusammenbasteln. Warum meine Vorgehensweise mit ls und cp nicht funktioniert wäre trotzdem interessant.

    Matthias
     
  17. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Sieht so aus, als wurde die Datei ul9ro8a.pfb durch xargs zum letzten Argument von cp. Vielleicht musst Du 'command' in Anfuehrungszeichen setzen, da sonst das Zielverzeichnis zusammen mit den Argumenten, die durch ls geliefert werden, in einen Hut geschmissen werden?
     
Thema: alles außer x kopieren
Besucher kamen mit folgenden Suchen
  1. linux alles kopieren außer

    ,
  2. unix alle unterverzeichnisse außer

Die Seite wird geladen...

alles außer x kopieren - Ähnliche Themen

  1. alles außer letzte 4 strings

    alles außer letzte 4 strings: Hallo, ich habe verschieden lange Strings (Dateinamen) und möchte gerne den Dateinamen als Variable ausgeben: 1. Strings...
  2. unklare Fragestellung: PATH alles außer "."

    unklare Fragestellung: PATH alles außer ".": Hallo ! Ich bearbeite gerade eine kleine Übungsaufgabe und weiß bei einer Teilaufgabe leider nicht so ganz weiter. Man sollte eine Datei...
  3. Daten UND Betriebssystem, alles auf einem SW-RAID1-Array...?

    Daten UND Betriebssystem, alles auf einem SW-RAID1-Array...?: Hallo zusammen Wollte fragen wie man sowas macht, leider finde ich im Internet immer nur die Anleitungen wo davon ausgegangen wird dass eine sep....
  4. Alles Gute: PHP ist 20

    Alles Gute: PHP ist 20: Vor zwanzig Jahren hat Rasmus Lerdorf die erste Version der »Personal Home Page Tools« veröffentlicht. Seitdem wurde die nun als »PHP: Hypertext...
  5. VLC 2.2.0 spielt fast alles überall

    VLC 2.2.0 spielt fast alles überall: Über ein Jahr arbeiteten die Entwickler an VLC 2.2.0. Der Grund dafür liegt unter anderem darin, dass nun zusätzlich Windows Phone, Windows RT und...