schlittermann

Die Arbeit mit Sitecopy

Es wird kurz erklärt, wie mit Sitecopy zu arbeiten ist. Als Beispiel nehmen wir eine bereits vorhandene Webpräsenz, die in Zukunft mit Sitecopy verwaltet werden soll.

Zuerst wird das Einrichten erläutert, dann das tägliche Leben mit Sitecopy und am Ende ist noch mal eine kurze Zusammenfassung der wichtigsten Optionen.

Es gibt also schon eine Webpräsenz

Sie haben schon eine Site auf dem Webserver und wollen in Zukunft diese mit Sitecopy bearbeiten. Was ist zu tun?

  1. Sitecopy sucht seine Konfiguration in der Datei ~/.sitecopyrc. Diese Datei editieren wir (bzw. beim ersten Mal wird sie neu angelegt). Je Site muss dort etwa folgender Eintrag rein:

    # ~/.sitecopyrc
    site <site>          # ein netter und kurzer Name der Site
        server <Hostname>    # Name des Servers
        username <Nutzer>    # Name des FTP-Nutzers
        local <Verzeichnis>  # Lokales Arbeitsverzeichnis (z.B. ".")
        remote <Verzeichnis> # korrespondierendes Verzeichnis auf dem fremden Server
        exclude <Muster>     # Dateien und Verzeichnisse, die nicht synchronisiert
                             # werden sollen (z.B. ".svn")
        checkmoved           # wenn lokal Dateien nur zwischen Verzeichnissen
                             # verschoben werden, dann auch auf der FTP-Server Seite
        safe                 # es werden keine zwischenzeitlich auf der
                             # anderen Seite geänderten Files überschrieben

    Damit wir dann nicht immer nach dem Passwort gefragt werden, legen wir eine weitere Datei an (oder ergänzen sie), das File heißt ~/.netrc und wird auch von anderen FTP-Clients genutzt, um Nutzernamen und Passworte zu erfahren.

    # ~/.netrc
    machine <FTP-Host>  login <FTP-Nutzer>  password <FTP-Passwort>

    Damit kein anderer diese ~/.netrc lesen kann, machen wir beim ersten Mal noch sicherheitshalber ein chmod go= ~/.netrc.

    Ein eventueller Default-Eintrag muß am Ende der Datei stehen.

    Natürlich hätte man das Passwort auch in die .sitecopyrc schreiben können, aber das gefällt mir nicht, falls wir die .sitecopyrc zusammen mit den einzelnen Sites irgendwo zentral lagern.

  2. Es wird lokal ein leeres Verzeichnis angelegt, nennen wir es workdir/. Dieses Verzeichnis kann auch schon Teile der Präsenz auf dem Web-Server enthalten. Zu beachten ist lediglich, daß dann beim Download eventuell Files gelöscht werden, die auf dem Server nicht vorhanden sind!

  3. Jetzt müssen wir uns vom fremden Server eine Liste mit den dort aktuellen Files abholen, dazu gehen wir erstmal in das Arbeitsverzeichnis (cd workdir) und verwenden nun:

    sitecopy -f <Site>

    Wenn wir neugierig sind, können wir mit einer Debug-Option auch noch dem FTP-Transfer zusehen: sitecopy -d ftp -f ....

  4. Nun können wir uns ansehen, was Sitecopy zu dieser Veranstaltung sagt, dabei wird nichts gelöscht oder übertragen, es vergleicht einfach nur die Fileliste des Servers mit den lokal vorhandenen Dateien:

    sitecopy <Site>

    Eine Aussage wie * These items have been deleted since... heißt nur, daß auf unserer Seite diese Files verschwunden sind, seitdem wir die Site das letzte mal aktualisiert hatten. (Aber das haben wir ja noch nie! Sitecopy weiß das natürlich nicht.)

  5. Nun können wir synchronisieren, also die Files vom Server runterladen:

    sitecopy -s <Site>

    Vorsicht: Dabei werden lokal vorhandene Files gelöscht, falls sie im Wege liegen. Es ist also wichtig, im richtigen Arbeitsverzeichnis zu sein. Dieser Fehler (menschliches Versagen) läßt sich vermeiden, wenn wir in der ~/.sitecopyrc nur absolute Pfadnamen für das lokale Verzeichnis eintragen.

    Anmerkung: Leider ist Sitecopy im Augenblick nicht in der Lage, tiefe Verzeichnis-Hierarchien anzulegen, als Workaround hilft hier, sitecopy -s ... so oft aufzurufen, bis alle Verzeichnisse vorhanden sind. Das Problem tritt nur auf, wenn das Elternverzeichnis eines anzulegenden Verzeichnisses noch nicht vorhanden ist.

  6. Nun können wir nach Belieben lokal ändern und anpassen. Wenn wir dann glauben, daß wir fertig sind, kann wieder hochgeladen werden:

    sitecopy -u <Site>

    Es werden dabei die Files aktualisiert, von denen Sitecopy glaubt, daß sie auf dem Server in einer alten Version vorliegen. (Über die Versionen auf dem Server hat Sitecopy sich ja am Anfang mit sitecopy -f ... informiert bzw. tut es bei jedem Upload automatisch.)

    Solange die Option safe in der Konfigurations-Datei steht, wird Sitecopy auch keine Files auf dem Server überschreiben, die dort zwischenzeitlich verändert wurden.

Das tägliche Leben mit Sitecopy

Halten wir noch mal fest: Sitecopy hat eine lokale Liste der Files auf dem Server. Normalerweise stimmt diese Liste — wenn außer uns selbst keiner den Server aktualisiert.

Vergleichen

Nach lokalen Änderungen möchten wir gerne sehen, was Sitecopy nun eigentlich hoch- oder runterladen würde. Dafür genügt ein:

sitecopy <Site>

Hochladen

Wenn wir also lokal etwas an den Webseiten geändert haben und nun sollen diese Änderungen wieder zum Server, dann geht das mit:

sitecopy -u <Site>

ganz einfach. Sitecopy vergleicht unsere lokalen Files mit der lokalen Liste der Serverdateien und lädt alle veränderten Files wieder hoch.

Wenn sich inzwischen auf dem Server die Files auch geändert haben sollten (weil vielleicht auch noch jemand anders aktualisiert hat), dann wird Sitecopy diese Files überschreiben, außer die Option safe ist in der Konfigurationsdatei.

Runterladen

Wenn wir lokal etwas zerstört haben und wollen die Files vom Server wieder zurück holen, dann können wir das mit:

sitecopy -s <Site>

erledigen. Achtung: Dabei werden alle(!) lokalen Änderungen mit den Dateien vom Server überschrieben. Es ist also eine gute Idee, lokal vorher eine Kopie zu machen.

Modifikationen von Dritten

Haben auf dem Server zwischenzeitlich Modifikationen von Dritten stattgefunden, dann stimmt natürlich die Vorstellung, die unser Sitecopy vom Server hat, nicht mehr (diese Vorstellung liegt in der oben erwähnten lokalen Fileliste). Dann muß mit:

sitecopy -f <Site>

diese Fileliste wieder aktualisiert werden. Danach können wir gewohnt weiterarbeiten.

Noch mal eine Zusammenfassung

Befehl Funktion Hinweis
sitecopy Site Zeigt, welche Änderungen auf dem Server zu tun wären, damit er der lokalen Version entspricht.
sitecopy -u Site Upload der lokalen Version zum Server, der Server wird der lokalen Seite angepaßt. Files auf dem Server werden eventuell überschrieben (nur wenn safe nicht in der Konfigurationsdatei steht). Achtung: Files, die lokal nicht mehr vorhanden sind, werden trotzdem auf dem Server gelöscht, unabhängig von safe. (Ich denke, das ist ein Bug.)
sitecopy -f Site Download der Fileliste vom Server, das sollte immer dann gemacht werden, wenn der Verdacht besteht, daß auf dem Server Änderungen von Dritten gemacht wurden.
sitecopy -s Site Download vom Server, die lokale Seite wird dem Server angepaßt. Files werden lokal eventuell überschrieben oder gelöscht!