Applescript - Dateien kopieren von SFTP zu lokal

svenson1

Aktives Mitglied
Thread Starter
Dabei seit
18.07.2007
Beiträge
111
Reaktionspunkte
12
Hallo,

ich versuche gerade mit curl im Terminal Dateien von einem SFTP-Server auf meine lokale Platte zu kopieren, um es später in ein Applescript bei jedem Bootvorgang zu starten. Leider macht der curl in meiner Version kein SFTP :-(

Mit welchem Befehl kann ich die Daten vom SFTP downloaden? RSYNC oder SCP oder noch was anderes?

Schönen Freitag!
Sven
 
bin mit scp nicht klar gekommen und habe jetzt ein Applescript mit Transmit erstellt, was erst einmal soweit funktioniert:

Code:
property ftp_password : "pass" -- Password to FTP-Server
property ftp_user : "user" -- Login for FTP-Server
property ftp_server : "server" -- FTP-Server
property ftp_directory : "pfad" -- Directory to your Blog
property local_destination : "pfad" -- Local Destination

with timeout of 1800 seconds
    try
        tell application "Transmit"
            -- Create a new session window for the script
            make new document at before front document
            -- send commands to the frontmost document window
            tell current session of document 1
                if (connect to ftp_server as user ftp_user with password ftp_password with connection type SFTP) then
                    if (set your stuff to local_destination) then
                        if (set their stuff to ftp_directory) then
                            synchronize method mirror direction download files with automatically determine time offset
                        else
                            display dialog ("An error occured, could not change remote folder")
                        end if
                    else
                        display dialog ("An error occured, could not change local folder to Sites")
                    end if
                end if
            end tell
            close document 1
        end tell
        tell application "Transmit" to quit
    on error {}
        -- it will hit this if the event takes longer than 1800 seconds
        display dialog "AppleEvent timed out"
    end try
end timeout

Ich würde nun noch gerne die Dateien vom FTP-Server löschen die älter als 7 Tage sind. Kann ich das mit Transmit erledigen, so dass er nach der Synchronisation ein Delete abarbeitet?
 
linux auf dem server vorausgesetzt:
Code:
ssh myhost.com 'find /my-dir -type f -mtime +7 -delete'
 
  • Gefällt mir
Reaktionen: RostigerRoboter
Und wenn wir schon dabei sind, deine 100000 Zeilen AppleScript lösung mittels scp:

Code:
scp -r user@dein.server.de:/path/to/remote/Ordner /home/user/Desktop/lokal/Ordner

Geht auch mittels rsync wenn du syncen willst über ssh, ähnlich zu der Lösung von Olivetti.

Edit:

Code:
rsync -chavzP --stats user@remote.host:/path/to/copy /path/to/local/storage

man rsync und man scp und man ssh helfen dir sicher weiter.
 
  • Gefällt mir
Reaktionen: RostigerRoboter
scp hatte ich so getestet, aber immer Protokollfehler erhalten. Wo wird das Protokoll SFTP mitgeteilt in der Befehlszeile scp?
 
SCP ist die Vorversion von SFTP.
Was sind das denn für Fehler und welcher Server ist beteiligt?
 
  • Gefällt mir
Reaktionen: dg2rbf
Mit einer Zeile Code wäre das natürlich wesentlich besser - das stimmt!

Wenn ich aber mit scp die Datei vom Kundenserver (ich weiss nicht, was für ein OS das ist) downloaden will, bekomme ich folgendes
Code:
protocol error: mtime.sec not delimited
 
ok, du wirst dich vermutlich auch nicht via ssh einloggen können? dann sieht es nach rechteproblem aus.

Code:
# z.b.
This service allows sftp connections only.

dann könntest auch sftp, statt scp nehmen.
 
nein, mit
Code:
ssh user@ip
komme ich nicht auf dem Server.

Mit
Code:
sftp user@ip
meldet sich sftp> - das geht.

Ich habe vom Kunde auch nur Zugangsdaten für sftp bekommen. Verwendet wird der Standard Port 22.
 
also habe ich mit scp keine Chance weiter?
 
nein, aber wie gesagt mit sftp.
 
...wenn es um das automatische Downloaden bzw. Synchronisieren von einem SFTP-Server geht, ist vielleicht Mountain Duck einen Blick wert:

https://mountainduck.io/

Das ist ein Ableger von Cyberduck, der externen Storage (u.A. SFTP) im Finder mountet und auf Wunsch synchronisiert, das Ganze lässt sich auch beim Booten mitstarten/mounten. Der Mountpunkt am Mac lässt sich ebenfalls bestimmen, so daß darauf auch über normale Shellscripte zugegriffen werden kann. Ebenfalls nett ist die transparente Einbindung von Cryptomator...
 
  • Gefällt mir
Reaktionen: ruerueka
Zurück
Oben Unten