Horst: Was machen copy, cp eigentlich wirklich?

Klaro,

Dateien werden kopiert. Aber wie wirds denn gemacht von copy & co?

Ich könnte mir folgende Varianten vorstellen (Programm "cp", copy unter LINUX):

1. cp konsultiert das Filesystem (FS), schaut nach den der zu kopierenden Datei physischen Cluster, fragt das FS nach neuen freien Clustern und kopiert bitweise in die neuen Cluster. Anschließend informiert cp das FS über die neu geschriebene Datei am Cluster xy...

2. cp liest die Datei zeichenweise ein und schreibt zeichenweise eine neue Datei über high-level-Funktionen wie fopen() und fclose().

Tja, wie nun ?

Viele Grüße,
Hotte

  1. Moin,

    1. cp liest die Datei zeichenweise ein und schreibt zeichenweise eine neue Datei über high-level-Funktionen wie fopen() und fclose().

    http://www.google.com/codesearch?hl=de&q=show:rT6HdJL7bMM:zHhp2wQlahE:GRXu6N-qsPk&sa=N&ct=rd&cs_p=ftp://alpha.gnu.org/gnu/coreutils/coreutils-5.1.3.tar.bz2&cs_f=coreutils-5.1.3/src/copy.c&start=1
    Zeile 1626 ff.

    --
    Henryk Plötz
    Grüße aus Berlin
    ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
    ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
    1. Moin,

      1. cp liest die Datei zeichenweise ein und schreibt zeichenweise eine neue Datei über high-level-Funktionen wie fopen() und fclose().

      http://www.google.com/codesearch?hl=de&q=show:rT6HdJL7bMM:zHhp2wQlahE:GRXu6N-qsPk&sa=N&ct=rd&cs_p=ftp://alpha.gnu.org/gnu/coreutils/coreutils-5.1.3.tar.bz2&cs_f=coreutils-5.1.3/src/copy.c&start=1
      Zeile 1626 ff.

      Jow, nicht nur diese Zeile.... echt der Hammer Henryk, und Deine Antwort kam so plötzlich, dass es mich total überrumpelt hat, ein herzliches Dankeschön an Dich!!!!!

      Und c passt natürlich auch ;-)

      Viele Grüße,
      Horst Haselhuhn

      1. Moin Moin!

        Es gibt übrigens auch Betriebssysteme (und Imitate ;-)), bei denen das Kopieren einer Datei eine Funktion des Betriebssystems ist. In Perls File::Copy ist das ganz gut erklärt, im Abschnitt zur syscopy()-Funktion, die je nach Betriebssystem eine spezielle Funktion aufruft.

        Alexander

        --
        Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
        1. Moin Moin! Alexander,

          Es gibt übrigens auch Betriebssysteme (und Imitate ;-)), bei denen das Kopieren einer Datei eine Funktion des Betriebssystems ist. In Perls File::Copy ist das ganz gut erklärt, im Abschnitt zur syscopy()-Funktion, die je nach Betriebssystem eine spezielle Funktion aufruft.

          den ganzen Tag (char *waste[]) hatte ich im Hinterkopf, mir "File::Copy" anzuschauen, was ich morgen natürlich auch machen werde, danke für den Hinweis!!!

          waste = {"Pilze suchen, nix gefunden, nix schlimm,  m a g g i hilft ..."};

          Viele Grüße an Alle,
          Horst Haselhuhn

      2. (Hallo|Hi(ho)|Tag) Horst,

        ... echt der Hammer Henryk, und Deine Antwort kam so plötzlich, ...

        Nomen est omen -- bei dem Domain-Namen: ploetzli.ch? ;-)

        MffG
        EisFuX

        1. hey EisFuX,

          Nomen est omen -- bei dem Domain-Namen: ploetzli.ch? ;-)

          Kennst du Hendryk etwa nicht? Er ist eines der zwar in jüngerer Zeit etwas sich rar machenden, dennoch aber "sehr alten" Forumsmitglieder und gewissermaßen ein "Forumsritter ohne Fehl und Tadel". Wenn er was sagt, hat er eben recht - genauso wie Cheatah.

          Ich als Alterspräsident des Forums (hach, wie schön, daß ich das mal wieder ins Spiel bringen kann) habe mit Hendryk natürlich auch schonmal unter vier Augen was vermutlich sehr Wichtiges beredet - ich kann mich bloß nicht mehr erinnern, was es war und worin die Wichtigkeit bestand. Vermutlich wars der Desktop-Manager auf seinem Laptop während des SELF-Treffens 2004 in Dresden.

          Grüße aus Berlin

          Christoph S.

          --
          Visitenkarte
          ss:| zu:) ls:& fo:) va:) sh:| rl:|
          1. Moin,

            Kennst du Hendryk etwa nicht?

            Wenn ich off-topic anmerken darf: Mein Vorname besteht aus sechs Buchstaben. Keiner davon ist ein 'd', 'i' oder 'c'. Ja, ich bin da etwas empfindlich. Ja, es gibt Leute die es schaffen, alle diese Buchstaben gleichzeitig zu verwenden, wenn sie versuchen, meinen Vornamen zu schreiben.

            --
            Henryk Plötz
            Grüße aus Berlin
            ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
            ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
            1. (Hallo|Hi(ho)|Nabend|dobry wieczór) Henryk Plötz,

              Kennst du Hendryk etwa nicht?

              Wenn ich off-topic anmerken darf: Mein Vorname besteht aus sechs Buchstaben. Keiner davon ist ein 'd', 'i' oder 'c'.

              Die Verwendung dieser Buchstaben scheint von der Herkunftssprache abzuhängen:
              http://www.kunigunde.ch/HMH.htm#gnHeinrich
              http://lexikon.beliebte-vornamen.de/heinrich.htm

              Ja, ich bin da etwas empfindlich. Ja, es gibt Leute die es schaffen, alle diese Buchstaben gleichzeitig zu verwenden, wenn sie versuchen, meinen Vornamen zu schreiben.

              Ich kann damit leben, wenn Fremde meinen Vornamen falsch buchstabieren. Ungemütlich werde ich erst, wenn derjenige behauptet, mich schon unter vier Augen kennengelernt zu haben -- Ausnahme: Legastheniker (Bekennende Holunderweinabhängige gibt es in meinem Bekanntenkreis nicht).

              Der erste, sehr weit entfernt mit dir "verwandte" Namensvetter, der mir begegnet ist, hieß "Hendrik". Keine Ahnung, welche Namen der Christoph so kennt, aber offensichtlich ist dein Name etwas weniger verbreitet, als die anderen Varianten:

              11600000 (Hendrik) zu 177000 (Hendryk)
              26600000 (Henrik) zu 6800000 (Henryk)

              MffG
              EisFuX

              --
              - Heinrich, der Wagen bricht!
              - Der Wagen bricht? Ist ihm denn schlecht?
            2. hallo Henryk,

              Wenn ich off-topic anmerken darf: Mein Vorname besteht aus sechs Buchstaben. Keiner davon ist ein 'd'

              Entschuldige. War halt ein Tippfehler, wie er mir ja (ganz selten) sicher auch mal unterlaufen darf. Andrerseits habe ich mich aber ganz ehrlich gefreut, daß du mal wieder hier zugegen bist.

              Ja, ich bin da etwas empfindlich.

              Ich übrigens auch. Ich bin auch schon mit "Kristopf" angeredet worden :-(

              Aber was wars denn nun auf deinem Laptop in Dresden: gdm oder kdm oder "was auch sonst"? Zumindest wars kein Vollbild.

              Und ich kann diesen grafischen Anmelde-Bildschirmchen seit je nichts abgewinnen. Die meisten erlauben mir keine Anmeldung als "root" (vor allem bei Debian und seinen Abkömmlingen) - was zwar vernünftig scheint, mich aber beim Kernelbauen u.ä. sehr behindert.

              Grüße aus Berlin

              Christoph S.

              --
              Visitenkarte
              ss:| zu:) ls:& fo:) va:) sh:| rl:|
            3. Hallo Henryk!

              Wenn ich off-topic anmerken darf: Mein Vorname besteht aus sechs Buchstaben. Ja, ich bin da etwas empfindlich. Ja, es gibt Leute die es schaffen, alle diese Buchstaben gleichzeitig zu verwenden, wenn sie versuchen, meinen Vornamen zu schreiben.

              ;)

              Ich war mal lange ob meines Nachnamens empfindlich. Nicht nur, dass die meisten Franzosen einen Mehrzahl-x anhängen wollten (Andrieux, den Namen gibt's auch zuhauf), was mir als einzigartiger Patrick Andrieu von ca. 500 gegen den Strich ging, aber hier in Deutschland habe ich die tollsten Schreibweisen (und Sprechweisen) erlebt:

              • Andrien
              • Andrian
              • Andriew
              • Andrew

              Auch, dass einigen den Nachnamen für meinen Vornamen hielten und mich mit Herrn Patrick begrüßten.

              Die im Deutschen ungewöhnlichen drei Vokalen ieu (ausgesprochen i-ö) haben mich am Ende dazu gebracht, bei internen Anrufen in der Firma mich mit:

              Andrieu mit Ö

              zu melden ;)

              Ach ja, unweit von meinem Heimatsdorf gibt es einen Ort namens Claouey. 100 Punkte demjenigen, der's ausprechen kann!

              Viele Grüße aus Frankfurt/Main,
              Patrick

              --

              _ - jenseits vom delirium - _
              [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
              Nichts ist unmöglich? Doch!
              Heute schon gegökt?
              1. Moin!

                Ach ja, unweit von meinem Heimatsdorf gibt es einen Ort namens Claouey. 100 Punkte demjenigen, der's ausprechen kann!

                "Klau-i".

                Die Punkte überweist du mir am besten auf meinen Pro-Account. ;)

                - Sven Rautenberg

                --
                "Love your nation - respect the others."
                1. Hallo Sven!

                  Ach ja, unweit von meinem Heimatsdorf gibt es einen Ort namens Claouey. 100 Punkte demjenigen, der's ausprechen kann!
                  "Klau-i".

                  Fast richtig. Nur wäre das dann sowas wie (american) Frenglisch (ey als i auszusprechen, wie in Mickey, Whiskey).

                  Klau-ä (allgemein) oder Klau-äi (lokale Aussprache).

                  Die Punkte überweist du mir am besten auf meinen Pro-Account. ;)

                  OK. ;)

                  Viele Grüße aus Frankfurt/Main,
                  Patrick

                  --

                  _ - jenseits vom delirium - _
                  [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
                  Nichts ist unmöglich? Doch!
                  Heute schon gegökt?
          2. (Hallo|Hi(ho)|hey|Tag) Christoph Schnauß,

            Nomen est omen -- bei dem Domain-Namen: ploetzli.ch? ;-)
            Kennst du Hendryk etwa nicht?

            Nicht persönlich (also von Angesicht zu Angesicht), aber als gedientes Forumsmitglied schon. Und ich wollte ledidglich den Horst auf die Korrelation von "plötzlich" und "ploetzli.ch" hinweisen. Das deplatzierte Fragezeichen war nur ein Versehen.

            Er ist eines der zwar in jüngerer Zeit etwas sich rar machenden, dennoch aber "sehr alten" Forumsmitglieder ...

            Die Forumssuche meint, dass ich erstmals 1999 hier schreibend aufgefallen bin (Wann ich das erste Mal mitgelesen habe, ist mir leider entfallen[1]). Deswegen kenne ich die "sehr alten" Forumsmitglieder etwas weniger gut als du ... ;-)

            ... und gewissermaßen ein "Forumsritter ohne Fehl und Tadel".

            Muss ich ihn mir dann gewissermaßen so vorstellen?
            "Nach Aussagen von Zeitgenossen war er ein ungewöhnlich hässlicher Mann, aber schon als Jüngling ein so kräftiger wie brutaler Haudegen."
            ;-)

            Wenn er was sagt, hat er eben recht - genauso wie Cheatah.

            ^_____^

            Ich als Alterspräsident des Forums ...

            Demokratisch gewählt?

            ... (hach, wie schön, daß ich das mal wieder ins Spiel bringen kann) habe mit Hendryk natürlich auch schonmal unter vier Augen was vermutlich sehr Wichtiges beredet - ich kann mich bloß nicht mehr erinnern, was es war und worin die Wichtigkeit bestand.

            Was lernen wir daraus?

            Erstens: Man sollte vor (wirklich) wichtigen Beredungen keinen Holunderwein zu sich nehmen!

            Zweitens: Es gibt Menschen, die Wert darauf legen, dass ihr (Vor-)Name korrekt geschrieben wird. Selbst Google bevorzugt die Variante ohne "d":
            And the winner is: Henryk
            Ergebnis: 6800000 (Henryk) zu 177000 (Hendryk).

            Vermutlich wars der Desktop-Manager auf seinem Laptop während des SELF-Treffens 2004 in Dresden.

            Grüße aus Berlin

            Zwei Berliner in Drääisdn -- geht sowas gut?

            [1] Leider ist das mit einer simplen Google- oder Forumssuche nicht in Erfahrung zu bringen. Die einzige Möglichkeit, die einen Hinweis liefern könnte, wäre meine AWeb-Bookmarkliste. Die befindet sich aber auf einer Festplatte, die mein derzeitiges Surfgerät nicht ein- oder auslesen kann.

            MffG
            EisFuX

            1. hallo,

              Ich als Alterspräsident des Forums ...
              Demokratisch gewählt?

              Um Gotteswillen, nein. Alterspräsident kann man hier nur durch Selbstproklamation werden. Und ältere Menschen neigen dazu, störrisch zu werden und ihre Eigenproklamationen zu überschätzen ...

              Grüße aus Berlin

              Christoph S.

              --
              Visitenkarte
              ss:| zu:) ls:& fo:) va:) sh:| rl:|
            2. Hi,

              Ich als Alterspräsident des Forums ...
              Demokratisch gewählt?

              Im Holunderwahn selbsternannt.

              cu,
              Andreas

              --
              Warum nennt sich Andreas hier MudGuard?
              O o ostern ...
              Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  2. Hallo Horst,

    1. cp konsultiert das Filesystem (FS), schaut nach den der zu kopierenden Datei physischen Cluster, fragt das FS nach neuen freien Clustern und kopiert bitweise in die neuen Cluster. Anschließend informiert cp das FS über die neu geschriebene Datei am Cluster xy...

    2. cp liest die Datei zeichenweise ein und schreibt zeichenweise eine neue Datei über high-level-Funktionen wie fopen() und fclose().

    Tja, wie nun ?

    Auch wenn bereits Code gepostet wurde, weder noch.

    1. Normalerweise nicht, weil das zu systemnah wäre. Man baut lieber auf FileOpen()-betriebssystem-Funktionen und ähnlichem auf, als für jedes mögliche Dateisystem nach freien Clustern zu suchen. Zudem sind unpriviligierte Benutzer (und deren Programme) meist sowieso nicht in der Lage, direkt im Dateisytsem runzuschreiben.

    2. triffts schon eher, allerdings kopiert man aus Performancegründen auf keinen Fall zeichenweise, sondern Blockweise. Ein Block ist dabei, um auch nicht zuviel RAM zu verbrauchen, z.B. so groß wie ein Kilobyte oder ein Cluster des Dateisystems (512Byte aufwärts). Kommt nicht wirklich drauf an, weil sowieso sehr viel gecached wird, nur die Größenordnung sollte stimmen. Bei zu kleinen Blockgrößen, verursacht halt die Schleife zuviel Verwaltungsoverhead, denn dann muss ja z.B. für jedes Byte auch noch der Schleifenzähler um eins erhöht werden und dann eben auch noch verglichen werden, ob man am Dateiende ist.

    Alles in einem Block kopieren geht selbstverständlich auch nicht, sonst wäre bei einer großen Datei der RAM sehr schnell voll.

    Jonathan