Wie synchronisiere ich den Inhalt eines lokalen Ordners automatisch mit dem Inhalt eines FTP-Ordners?

9

Nachdem ich überall gesucht habe, habe ich es nicht geschafft, eine bestimmte Antwort auf meine Frage zu finden.

Unter Windows gibt es eine Anwendung namens FTPbox , die in jedem festgelegten Zeitraum automatisch einen lokalen Ordner mit einem FTP-Ordner synchronisiert.

Meine Frage ist, wie kann ich mit Ubuntu dasselbe erreichen? Die Hauptsache ist hier, dass ich es nicht manuell machen möchte. Es muss ein vollautomatischer Prozess sein, bei dem kein menschliches Eingreifen erforderlich ist (natürlich muss ich dies einrichten, wenn dies als menschliches Eingreifen LOL klassifiziert wird).

Vielen Dank im Voraus für hilfreiche Antworten.

-Edward

Edward Nunn
quelle

Antworten:

16

Erste Lösung

Installieren lftp

sudo apt-get install lftp

danach Skript erstellen

#!/bin/bash
HOST='mysite.com'
USER='myuser'
PASS='myuser'
TARGETFOLDER='/new'
SOURCEFOLDER='/home/myuser/backups'

lftp -f "
open $HOST
user $USER $PASS
lcd $SOURCEFOLDER
mirror --reverse --delete --verbose $SOURCEFOLDER $TARGETFOLDER
bye
"

Speichern Sie es an einem Ort mit Namen upload.sh. Gib ihm die +xErlaubnis.

sudo chmod +x /path_to_script/upload.sh

Setup crontab, um diesen Befehl in jedem xZeitraum auszuführen

Zum Bearbeiten von crontab run

crontab -e

Zum Ausführen des Befehls alle 5 Minuten ist Code

 */5 * * * * /path_to_script/upload.sh

zu jeder Stunde

 0 */1 * * * /path_to_script/upload.sh

um 4 Uhr morgens laufen

 0 4 * * * /path_to_script/upload.sh

Lösung zwei

Erstellen Sie ein kleines und einfaches Skript aufgerufen , lftp-scriptdass LFTPlesen:

open ftp://username:[email protected]
mirror -v --only-newer /home/local/path/ /website.com/public_html/

Schließlich können Sie LFTPdie Synchronisation ausführen und starten. Stellen Sie crontab so ein, wie ich schreibe, aber setzen Sie den Befehl

lftp -f /path/to/lftp-script

etwas wie das

 */5 * * * * lftp -f /path/to/lftp-script

Lösung drei

Installieren curlftpfs

sudo apt-get install curlftpfs

Um FTP lokal zu mounten, müssen Sie diese Befehle ausführen. Erstellen Sie ein Verzeichnis, das synchronisiert wird

mkdir hostr

Mounten Sie das Remote-FTP-Verzeichnis auf local

sudo curlftpfs -o allow_other ftp://user:[email protected] host

user: pass ist der Benutzername und das Passwort, um sich bei einem FTP-Konto anzumelden.

Sie können für die automatische Montage hinzufügen curlftpfs, fstabindem Sie diese Zeile verwenden:

curlftpfs#user:[email protected] /mnt/host fuse rw,uid=500,user,noauto 0 0
2707974
quelle
1
TARGETFOLDER = '/ new' = Ordner auf FTP? SOURCEFOLDER = '/ home / myuser / backups' = lokaler Ordner mit Dateien, die ich hochladen möchte?
Edward Nunn
ja und ja. :)
2707974
diese Übertragungsdatei sagen Untitled 1.odt' mirror: /home/edward/bl3/bl2/bl1/Untitled 1.odt: No such file or directory Unknown command ; '
Edward Nunn
Basierend auf dem FTP-Serverpfad kann es sein, dass nicht nur /newOrdner. Überprüfen Sie beide Pfade.
2707974
Wenn Sie einen source folderlokalen Ordner erstellen , muss dieser Ordner mit dem FTP-Ordner synchronisiert werden.
2707974