Antworten:
Sie tun dies genauso wie in einem Verzeichnis, geben jedoch den vollständigen Pfad zum Dateinamen als Quelle an. In Ihrem Beispiel:
rsync -avz /var/www/public_html/.htaccess root@<remote-ip>:/var/www/public_html/
Grundlegende Syntax
rsync options source destination
Beispiel
rsync -az /var/www/public_html/filename root@<remote-ip>:/var/www/public_html
Die Antwort von Michael Place funktioniert hervorragend, wenn im Verhältnis zum Stammverzeichnis für Quelle und Ziel bereits alle Verzeichnisse im Dateipfad vorhanden sind.
Was aber, wenn Sie eine Datei mit diesem Quellpfad synchronisieren möchten:
/ source-root / a / b / file
zu einer Datei mit dem folgenden Zielpfad:
/ target-root / a / b / file
und die Verzeichnisse a und b existieren nicht?
Sie müssen einen rsync-Befehl wie folgt ausführen:
rsync -r --include="/a/" --include="/a/b/" --include="/a/b/file" --exclude="*" [source] [target]
Bisher sind zwei der Antworten nicht ganz richtig, sie erhalten mehr als eine Datei, und die andere ist nicht so einfach wie es sein könnte. Hier ist eine einfachere Antwort, IMO.
Im Folgenden wird genau eine Datei abgerufen, Sie müssen jedoch das Zielverzeichnis mit mkdir erstellen. Dies ist wahrscheinlich die schnellste Option:
mkdir -p ./local/path/to/file
rsync user@remote:/remote/path/to/file/ -zarv --include "filename" --exclude "*" ./local/path/to/file/
Wenn sich in / remote / path nur eine Instanz der Datei befindet, kann rsync Verzeichnisse für Sie erstellen, wenn Sie die folgenden Schritte ausführen. Dies wird wahrscheinlich etwas länger dauern, da mehr Verzeichnisse durchsucht werden. Außerdem werden leere Verzeichnisse für Verzeichnisse in / remote / path erstellt, die sich nicht in ./local befinden
cd ./local
rsync user@remote:/remote/path -zarv --include "*/" --include "filename" --exclude "*" .
Beachten Sie, dass die Reihenfolge von - einschließen und - ausschließen wichtig ist.