Ich muss ein Verzeichnis mit einem Remote-Server synchronisieren, damit alle Dateien von Benutzer X und Gruppe Y auf dem Quellcomputer (lokal) dem Benutzer W und der Gruppe Z auf dem Zielcomputer (Remotecomputer) zugeordnet werden. Wenn möglich mit ssh als Transport, aber wenn ich den rsync-Daemon verwenden muss, ist es auch in Ordnung.
Gibt es eine Möglichkeit, das zu tun? Ich suche nach einer Möglichkeit, eine beliebige Benutzer- / Gruppenzuordnung zu erstellen, z
local user X => remote user W
local group Y => remote group Z
... and as many of these as needed.
Dies sollte ein ziemlich häufiger Anwendungsfall sein, nicht wahr? ZB habe ich Dateien auf meinem lokalen Computer, auf denen mein Benutzername X lautet, und ich muss sie auf einen Webserver hochladen, auf dem sie einem bestimmten Benutzer gehören müssen, der weder denselben Namen noch dieselbe UID wie mein Benutzer hat mein PC.
Ich kann das nicht auf der Manpage von rsync finden ...
LINUX auf lokalem und Remote-Computer (Ubuntu local, centOS remote)
Befehl, den ich ausprobiert habe: rsync -avz / path / to / local [email protected]: / path / to / remote
quelle
Antworten:
In Rsync Version 3.1.0 wurden die Optionen
--usermap
und--groupmap
genau zu diesem Zweck eingeführt. Siehe die Manpage .quelle
In der letzten Version (mindestens 3.1.1) von rsync können Sie den "Remote-Besitz" angeben:
Ändert den Besitz von Tom in WWW-Daten (auch bekannt als PHP / Nginx). Wenn Sie Mac als Client verwenden, verwenden Sie Brew, um auf die letzte Version zu aktualisieren. Laden Sie auf Ihrem Server Archivquellen herunter und "machen" Sie es dann!
quelle
Wenn Sie den Besitz von Dateien auf beliebige Benutzer ändern möchten, müssen Sie sich zuerst im Zielfeld als Root befinden.
Ich glaube nicht, dass es eine solche Funktion gibt, die von rsync integriert wird, aber Sie können sie erreichen, indem Sie a ausführen,
find
nachdem Sie rsync ausgeführt haben.Möglicherweise reicht ein Befehl wie dieser aus: Übersetzen Sie beispielsweise von UID 1000 => 505 und UID 1001 => 700:
Wenn Sie viele Benutzer haben, können Sie eine Schleife mit einer Zuordnung in Ihrer Vorliebe verwenden.
Habe Spaß.
quelle
id
auf Ihrem Computer zu arbeiten, um zu sehen. Wenn Sie die IDs wie folgt verwenden, gehen Sie daher davon aus, dass sich auf dem Remotecomputer kein Benutzer mit derselben ID befindet, und dies ist wahrscheinlich nicht der Fall.Ich bin nicht sicher, ob ich das verstehe.
ssh
Um eine Verbindung herzustellen, müssen Sie einen Benutzernamen angeben. Dieser Benutzername ist Benutzer W auf dem Remotecomputer, der zur Gruppe Z gehört. Daher wird alles genau so übertragen, wie Sie es möchten:BEARBEITEN als Antwort auf den Kommentar des OP.
Verwenden Sie diese Option nicht, wenn Sie diese Benutzerzuordnung durchführen und die Berechtigungseinstellungen nicht verlieren möchten
-a
. Führen Sie zunächst rsync mit aus[email protected]
, um den richtigen Benutzernamen zu erhalten.-a
Geben Sie dann die Optionen manuell an , anstatt dass Sie das Eigentum behalten. Vonman rsync
:Also,
-a
aktiviert alle oben genannten Optionen , aber Sie wollen nicht die Gruppe oder den Eigentümer zu bewahren. Dieser Befehl sollte tun, was Sie wollen:Da Sie sich jetzt als anmelden
mywww
und die Eigentümer- / Gruppeninformationen nicht mehr beibehalten, gehören die von erstellten Kopienrsync
demmywww
Benutzer.quelle
-a
dass der Eigentümer und die Gruppenoptionen beibehalten werden. Siehe meine aktualisierte Antwort.-a
getan) ii) alle Einschränkungen, die Sie haben, klar zu erklären, Sie haben nur einen einzelnen Benutzer bis zu Ihrem letzten Kommentar erwähnt und iii ) Erwähnen Sie Ihr Betriebssystem. Wie auch immer, der Weg, dies zu tun,rsync
wäre, einen Satz von Dateien alsmywww@remote
und den nächsten Satz als zu kopierenroot@remote
.-a
was das Eigentum bewahrt. In den von Ihnen angegebenen Beispielen wurde vorgeschlagen, dass Sie dies nur für einen Benutzer tun müssen. Aufrsync
jeden Fall würde ich empfehlen, dass Sie einfach eine Liste der verschiedenen Dateien erstellen, die Sie für jeden Benutzer kopieren möchten, und mehrere rsyncs ausführen, die mit dem entsprechenden Benutzernamen eine Verbindung zum Remote-Computer herstellen. Das wird einfacher und sicherer.