OSX SSH rsync - Halten Sie Remote-Verzeichnis auf dem neuesten Stand

Ich komme hauptsächlich aus einem Windows-Hintergrund und migriere auf den Mac. Ich habe WinSCP verwendet und eine Funktion namens "Remote Directory auf dem neuesten Stand halten" geliebt.

Hier ist die Frage: Gibt es einen äquivalenten SCP-Client für OSX, der ein Verzeichnis auf Änderungen überwacht und hochlädt, wenn es erkannt wird? Es ist mir egal, ob es sich um einen GUI-Client oder über die Befehlszeile (rsync, ssh usw.) handelt.

Author: squircle, 2011-01-12

6 answers

Am besten verwenden Sie wahrscheinlich Folder Actions und passen das Skript new item alert an Ihre Bedürfnisse an und rufen das Befehlszeilenprogramm Ihrer Wahl auf.

 0
Author: Daniel Beck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-01-12 05:57:03
alias run_rsync='rsync -azP --exclude ".*/" --exclude ".*" --exclude "tmp/" /source_folder username@host:/destination_folder'
run_rsync; fswatch -o . | while read f; do run_rsync; done

Zweite Zeile läuft run_rsync einmal bedingungslos und dann - bei jeder Änderung im aktuellen Verzeichnis (oder geben Sie den genauen Pfad anstelle von .)

Sie benötigen fswatch - so installieren Sie über brew:

brew install fswatch

Rsync-Optionen:

  • - a-steht für "Archiv" und synchronisiert rekursiv und bewahrt symbolische Links, Sonder-und Gerätedateien, Änderungszeiten, Gruppen, Eigentümer und Berechtigungen.
  • - z-Kompression
  • - P-kombiniert die Flags -- fortschritt und ... teilweise. Die erste davon gibt Ihnen einen Fortschrittsbalken für die Übertragungen und die zweite ermöglicht es Ihnen, unterbrochene Übertragungen fortzusetzen
  • --exclude-schließt Dateien nach Muster aus
 14
Author: Daniel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-10-20 19:50:43

Sie können launchd anstelle von Ordneraktionen verwenden (um einen Beispielcode zu erhalten, für den Sie nur googeln: launchd folder watcher).

Sie können dann Ihr launchd Folder Watcher-Element mit einem SCP-Skript kombinieren, das dieses ähnelt.

, Oder verwenden Sie rsync über ssh wie folgt:

rsync -urltv --delete -e ssh /path/to/dir othermachine:/path/to/dir

Für eine kommerzielle plattformübergreifende Softwarelösung siehe GoodSync.

 1
Author: nilsoft,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-11-28 19:02:54

- Check out - Übertragung Panik. Aus einem ihrer Blog-Beiträge sagte ein Kommentator:

Eine meiner Lieblingsfunktionen, die manche Leute vielleicht nicht kennen, wenn Sie ein Dokument in einer bestimmten Anwendung in Transmit öffnen (sagen wir an .html-Datei in BBEdit) dann bearbeiten Sie das Dokument und speichern Sie es; Es lädt es automatisch zurück auf den Server in die gleiche Datei, keine Fragen gestellt. Es wirkt Wunder, wenn Sie Websites erstellen und CSS bearbeiten. Auch bequem zu machen kleine korrekturen in Bildern über Photoshop. Sie können auch damit umgehen, wie Transmit mit bestimmten Dateierweiterungen über die Präfixe umgeht.

 0
Author: fideli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-01-12 02:12:27

Ich bin auf ein Ruby-Skript gestoßen, das das tut, was Sie brauchen, aber es wird etwas länger dauern.

Beschreibung:
rsync immer dann, wenn das Verzeichnis, in dem sich das Skript befindet, mithilfe der OS X FSEvents-API geändert wird https://gist.github.com/149491

 0
Author: Richard West,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-02-10 17:05:18

Nun, ich hatte die gleiche Art von Problem und es ist möglich, diese zusammen zu verwenden: rsync, SSH Passwordless Login, Watchdog (ein Python-Synchronisierungsprogramm) und Terminal Notifier (ein OS X-Benachrichtigungsprogramm, das mit Ruby erstellt wurde. Nicht benötigt, hilft aber zu wissen, wann die Synchronisierung beendet ist).

  1. Ich habe den Schlüssel für die passwortlose Anmeldung mit diesem Tutorial aus dem Dreamhost-Wiki erstellt: http://cl.ly/MIw5

    1.1. Wenn Sie fertig sind, testen Sie, ob alles in Ordnung ist... wenn Sie nicht wortlos bestehen können Loggen Sie sich ein, vielleicht müssen Sie afp Mount ausprobieren. Dreamhost (wo sich meine Site befindet) erlaubt kein AFP-Mounten, ermöglicht jedoch die passwortlose Anmeldung. Geben Sie im Terminal ein:

    ssh [email protected] Sie sollten sich anmelden, ohne dass Passwörter gefragt werden: P

  2. Ich habe den Terminal Notifier von der Github-Seite installiert: http://cl.ly/MJ5x

    2.1. Ich habe den Befehl Gem installer verwendet. Geben Sie im Terminal ein:

    gem install terminal-notifier

    2.3. Testen Sie, ob die Benachrichtigung works.In Terminal, Typ:

    terminal-notifier -message "Starting sync"

  3. Erstellen Sie ein sh-Skript, um die rsync + - Benachrichtigung zu testen. Speichern Sie es überall, wo Sie möchten, mit dem Namen, den Sie mögen. In diesem Beispiel nenne ich es ~/Scripts/sync.sh Ich habe die Erweiterung ".sh, aber ich weiß nicht, ob sie benötigt wird.

    #!/bin/bash terminal-notifier -message "Starting sync" rsync -azP ~/Sites/folder/ [email protected]:site_folder/ terminal-notifier -message "Sync has finished"

    3.1. Denken Sie daran, diesem sh-Skript die Ausführungsberechtigung zu erteilen. Geben Sie im Terminal ein:

    sudo chmod 777 ~/Scripts/sync.sh 3.2. Führen Sie das Skript aus und überprüfen Sie, ob die Nachrichten korrekt angezeigt werden und der rsync tatsächlich synchronisieren Sie Ihren lokalen Ordner mit dem Remote-Ordner.

  4. Schließlich habe ich Watchdog von der Github-Seite heruntergeladen und installiert: http://cl.ly/MJfb

    4.1. Zuerst habe ich die Libyaml-Abhängigkeit mit Brew installiert (es gibt viele Hilfe, wie man Brew installiert - wie eine "Eignung" für OS X). Geben Sie im Terminal ein:

    brew install libyaml

    4.2. Dann habe ich den Befehl "easy_install" verwendet. Gehen Sie in den Ordner von Watchdog, und geben Sie ein Terminal:

    easy_install watchdog

  5. Jetzt ist alles installiert! Gehe zu dem Ordner, den du synchronisieren möchtest, ändern Sie diesen Code nach Ihren Bedürfnissen und geben Sie Terminal ein:

      watchmedo shell-command
          --patterns="*.php;*.txt;*.js;*.css" \
          --recursive \
          --command='~/Scripts/Sync.sh' \
          .
    

    Es muss GENAU auf diese Weise mit den Schrägstrichen und Zeilenumbrüchen sein, also müssen Sie diese Zeilen in einen Texteditor kopieren, das Skript ändern, einfügen Terminal und drücken Sie return.

    Ich habe es ohne Zeilenumbrüche versucht, und es funktioniert nicht!

    In meinem Mac, ich bekomme immer einen Fehler, aber es scheint nichts zu beeinflussen:

    /Library/Python/2.7/site-packages/argh-0.22.0-py2.7.egg/argh/completion.py:84: UserWarning: Bash completion not available. Install argcomplete.

    Nun, machte einige Änderungen in einer Datei im Ordner, und beobachten Sie die Magie!

 0
Author: Eduardo Russo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-01-21 09:17:58