• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Versteckte Ordner und Dateien sichern

Hallo Hallo,

ich habe grad mein /home Veruzeichnis mit tar archiviert und es angesehen. Voller Schrecken musste ich feststellen das keine versteckten Dateien mitgesichert werden. Der verwendete Befehl war
Code:
tar -tvf /root/archive.tar /home/*
wenn ich es noch exact weis. Was soll ich tun das diese mitarchiviert werden??
 
Sieht irgendwie aus, als würdest Du das Packen und das Anzeigen vermischen. Zum Archivieren geht folgendes:
Code:
tar -cvf home.tar /home/*
Bei mir werden versteckte Dateien mit archiviert. Wenn du wenig Platz hast, würde ich es noch packen mit -cvzf (zip) oder -cvjf (bzip2). Aber das dauert dementsprechend.

Anzeigen kannst Du dein Archiv dann mit:
Code:
tar -tvf home.tar
 
Also ich probier das nochmal aber ich glaube das ich den Befehl
Code:
tar -cvf home.tar /home/*
benutz habe. Denke ich habe mich nur verschrieben. Ich hab openSuSE 10.2 was hast du??
 
Was sind denn bitte für Dich "Versteckte Ordner und Dateien"?
Wir sind hier nicht bei Windows.

Meinst Du etwa Dateinnamen, die mit "." beginnen?
Dann musst Du die explizit angeben, da der Stern '*' solche nicht mit einbezieht, so du nicht "dotglob" gesetzt hast (wenn dir das nichts sagt hast Du es nicht, solltest es auch nicht tun und auch nicht weiter fragen).

Also
Code:
tar -cvf home.tar /home/* /home/.*
und gut ist's

Probier mal ein "ls /pfad/*". Nur was hier angezeigt wird, wird durch deinen Befehl auch gesichert. Eigentlich logisch, oder? Eine Option -a wie bei ls gibts halt bei tar nicht.
 
pft schrieb:
Was sind denn bitte für Dich "Versteckte Ordner und Dateien"?
Wir sind hier nicht bei Windows.
Dennoch hat er recht, da die mit "." beginnenden Datei/Verzeichnisnamen sehr wohl versteckt dargestellt werden (mit ls, mit einem Dateimanager). Wir sind hier nicht bei Windows, aber dann nenne uns doch bitte den genauen Linux/Unix-Terminus, wenn es denn einen Unterschied gibt.

Dann musst Du die explizit angeben, da der Stern '*' solche nicht mit einbezieht, so du nicht "dotglob" gesetzt hast (wenn dir das nichts sagt hast Du es nicht, solltest es auch nicht tun und auch nicht weiter fragen).

Ich hab openSuse 10.3 (gerade neu), und bei mir werden mit "pfad/*" alle Dateien ins Archiv gepackt. Das ist allerdings wohl je nach Befehl unterschiedlich. Mache ich z.B. ein "rm -rf *", werden die versteckten Dateien ausgelassen. Oder auch das von dir genannte Beispiel mit "ls pfad/*".
 
bei mir werden mit "pfad/*" alle Dateien ins Archiv gepackt
Das widerspricht m.E. zumindest dem bash reference manual.
When a pattern is used for filename generation, the character `.' at the start of a filename or immediately following a slash must be matched explicitly, unless the shell option dotglob is set. When matching a file name, the slash character must always be matched explicitly. In other cases, the `.' character is not treated specially.
in http://www.gnu.org/software/bash/manual/bashref.html

Da es in allen Fällen die bash ist, die den * auswertet, verstehe ich nicht, warum sie das mal so und mal so machen sollte.

Muss ich heute abend mal selbst probieren
 
OK Leute. Vielen Dank für eure Antwort. Also ich habe die Lösung mit dem .* ausprobiert und es funktioniert.

Was sind denn bitte für Dich "Versteckte Ordner und Dateien"?
Wir sind hier nicht bei Windows.

Meinst Du etwa Dateinnamen, die mit "." beginnen?

Ja die habe ich gemeint. Sorry für meine Windows Verseuchte Sprache.

Ja ich fand das auch sehr komisch das bei * nicht alles kopiert wird. Vor allen dingen habe ich gegoogelt wie verrückt. Keiner schein das Problem zu haben oder keiner kennt es. Allerdings finde ich das sehr gefährlich.
 
hallo,

ich hab das jetzt auch mal ausprobiert und eigentlich ist alles normal.
Einzig must Du aufpassen, wenn du keinen ansoluten Pfad (beginnt mit /) benutzt sndern einen relativen. Unter ".*" versteht die Shell logischerweise auch ".." Du musst dann also etwas variieren, je nachdem wie deine .-Dateien heissen. Also zum Beispiel ".[0-9a-zA-Z]*", das sind dann alle die nach dem Punkt einen Buchstaben oder eine Zahl haben (ohne ßäüö natürlich)

@Waldi
Ja ich fand das auch sehr komisch das bei * nicht alles kopiert wird. Vor allen dingen habe ich gegoogelt wie verrückt. Keiner schein das Problem zu haben oder keiner kennt es. Allerdings finde ich das sehr gefährlich.
Das ist weder komisch noch gefährlich sondern seit Jahrzehnten Unix Praxis. Das Problem beim googlen ist halt, dass man wissen muss, wonach man suchen soll. Und das Problem hat ganz einfach deswegen keiner weil es eben keines ist.

BTW, wenn du sicher alle Dateien unter /home ins Archiv packen willst, dann mach doch einfach
Code:
tar -cvf home.tar /home

@rcf
Ich hab openSuse 10.3 (gerade neu), und bei mir werden mit "pfad/*" alle Dateien ins Archiv gepackt. Das ist allerdings wohl je nach Befehl unterschiedlich. Mache ich z.B. ein "rm -rf *", werden die versteckten Dateien ausgelassen. Oder auch das von dir genannte Beispiel mit "ls pfad/*".
Mit Verlaub, das glaube ich nicht. Erstens ist, das in Unix seit Jahrzehnten so und den Fehler hätte sicherlich jemand bemerkt. zweitens macht das in jedem Fall die Shell. Erklär mir mal warum die das unterschiedlich machen sollte. Drittens hab ich es unter Suse 10.2 probiert und da sind ist das bei tar wie bei allen anderen Fällen: "Pfad/*" schliesst .-Dateien nicht ein.
 
pft schrieb:
BTW, wenn du sicher alle Dateien unter /home ins Archiv packen willst, dann mach doch einfach
Code:
tar -cvf home.tar /home

@rcf
Ich hab openSuse 10.3 (gerade neu), und bei mir werden mit "pfad/*" alle Dateien ins Archiv gepackt. Das ist allerdings wohl je nach Befehl unterschiedlich. Mache ich z.B. ein "rm -rf *", werden die versteckten Dateien ausgelassen. Oder auch das von dir genannte Beispiel mit "ls pfad/*".
Mit Verlaub, das glaube ich nicht. (...)
Du hast vollkommen recht. Ich habe mich leider verguckt, tut mir leid. In der Tat schließt auch bei tar das * die versteckten Dateien nicht mit ein. Was mich daran verwirrt hat ist die Tatsache, dass versteckte Dateien aus Unterverzeichnissen aber sehr wohl mit erfasst werden. Das * schließt also nur versteckte Dateien der aktuellen Verzeichnisebene aus. Insofern muss man sich als Windowsnutzer etwas umgewöhnen und in so einem Fall das Sternchen ganz weglassen, so wie oben im Beispiel genannt: "/home" erfasst zunächst nur das Verzeichnis home, und alle (versteckten) Unterverzeichnisse und Dateien sind dann drin enthalten.
Ich kann mir schon vorstellen, wann das * nützlich ist, es war mir so aber noch nie bewusst geworden.
 
@rcf

ja, darum
1) mein als Frage versteckter Hinweis "Linux ist nicht Windows"; .-Dateien sind eben nicht im Sinne von Windows versteckt, sondern nur für die Shell (und "ls") oberflächlich unsichtbar, wenn man per "*" zugreift
2) die Warnung bei den relativen Pfaden: ".*" schliesst ".." ein, und das hat Folgen :!:
3) der Tipp mit dem "tar -cvf file.tar /home" also ganz ohne stern - kam ich auch erst am Ende drauf :idea:

Der Schlüssel hier ist also vielleicht weniger "wann das * nützlich ist", sondern eher wann man es besser weglässt ;-)
 
Oben