Erzwingen Sie neue Berechtigungen für Dateien nach rsync aus der Seedbox


7

Ich habe ein Seedbox-Konto, das ich zum Torrenting benutze. Ich habe einen Cron-Job eingerichtet, mit rsyncdem alle Dateien von der Seedbox auf meinen 14.04.1-Ubuntu-Server heruntergeladen werden. Der Download-Ordner ist eine Samba-Freigabe, da ich zuvor Windows verwendet habe, um den Inhalt in Ordnern zu organisieren, bevor er an einen dauerhafteren Ort auf meinem Server verschoben wurde. Vor dem Upgrade auf 14.04 habe ich 12.04 verwendet und alles hat gut funktioniert.

Das Problem ist, dass die Dateien, die ich von der Seedbox erhalte, einem Benutzer namens "544" gehören (dies ist der von der Seedbox generierte Benutzername, keine Oktalsache) und von meinem Benutzer auf meinem Server nicht gelöscht werden können. Nachdem ich die Berechtigungen für den Download-Ordner geändert habe, kann ich sie löschen. Außerdem habe ich allen Benutzern die Berechtigung zum Lesen / Schreiben im Samba-Ordner beim Teilen erteilt.

Meine Frage lautet also: Ist es durch einen eleganten Befehl möglich, rsyncBenutzer / Berechtigungen für die Dateien beim Herunterladen zu ändern? Oder ist es möglich, den Ordner so zu gestalten, dass alle neuen Dateien beim Kopieren / Verschieben automatisch den Benutzer wechseln? Ich denke, ich könnte den chmodBefehl in sudo cron setzen, um von Zeit zu Zeit ausgeführt zu werden, um den Eigentümer der Dateien zu ändern, aber da die herunterzuladende Datenmenge manchmal ziemlich groß sein kann, ist es schwierig zu wissen, wann sie ausgelöst werden soll Beziehung zum rsync-Job, um sicherzustellen, dass alle Dateien heruntergeladen werden.

Antworten:


15

rsync Der Eigentümer bleibt nur erhalten, wenn Sie dazu aufgefordert werden. -oAndernfalls gehören die Dateien dem Benutzer, der den rsyncBefehl ausführt, genau wie beim Erstellen anderer Dateien. -aenthält -ojedoch so viele gängige rsyncBefehlszeilen. man rsyncenthält eine Passage dazu ausdrücklich:

For example: if you want to use -a (--archive) but don’t want -o
(--owner),  instead  of  converting  -a  into -rlptgD, you could
specify -a --no-o (or -a --no-owner).

Anstelle von können rsync -a source destSie also festlegen rsync -a --no-o source dest, dass Dateien dem Benutzer gehören, der den Befehl ausführt.

Auf der anderen Seite können Sie den Eigentümer einer Datei normalerweise nur ändern, wenn Sie root sind, sodass dies nicht viel bringt. Wenn dieser Job aus irgendeinem Grund als root ausgeführt werden muss und Sie möchten, dass die Dateien Ihrem normalen Benutzer und nicht root gehören, können Sie die folgende --chownOption verwenden:

rsync -a --chown=youruser:yourgroup ...

Es gibt auch eine --usermapOption für kompliziertere Zuordnungen, wenn Sie einige Benutzer behalten möchten. Es wird eine durch Kommas getrennte Liste von from:toPaaren benötigt.

Als letzte Option können Sie, da Sie anscheinend rsyncvon einem Cron-Job ausgeführt werden, den Vorgang zum Ändern des Besitzers / der Berechtigungen einfach an den Cron-Job mit anhängen && chown ....


1
Die --chmodOption von rsynckann auch von Interesse sein, da nur rootder Besitz von Dateien auf den meisten Systemen geändert werden kann.
D_Bye

1
Die Option --chmod wurde mit rsync Version 3.1 hinzugefügt. Zum Beispiel versendet Debian von Jessie mit dieser Version.
Rethab

Es scheint auch, dass sowohl Client als auch Server 3.1.0+ ausführen sollten, um verwendet zu werden --chown.
Jacke

0

Ich habe einige Möglichkeiten getestet, aber in meinem Fall das Ergebnis von zB diesem Skript

rsync -a -v --progress --modify-window=1 -c -b -i -s -m --del -vv --ignore-errors --chmod=ugo=rwx --delete --delete-excluded  --exclude='*~'  --exclude='.*' --backup-dir=.rsync_bak /home/test /media/user/usb_ext4

war, dass die Berechtigung nicht breiter sein kann als die Berechtigung der Partition / des Ziels, in die die Datei geschrieben werden soll. (Überprüfen Sie diese Berechtigungen nach dem Mounten des Geräts.)


Das ist ein ziemlich komplexer rsync-Befehl mit einigen redundanten und selbstinkonsistenten Optionen: Beispielsweise sollte nur entweder -v(ausführlich) oder -vv(sehr ausführlich) erforderlich sein. Sollte --modify-window=1auch nutzlos sein, wenn die -cÄnderungszeit nicht im Vergleich berücksichtigt werden sollte: Der Inhalt sollte immer mit einer Prüfsumme versehen werden. Und die "Berechtigung kann nicht breiter sein als die Berechtigung des Ziels" klingt nach einem dateisystemspezifischen Problem: Synchronisieren Sie zufällig mit einem VFAT-Dateisystem?
TelcoM

Ich versuche für vfat, fuseblk, ext3, ext4 ... Sicher haben Sie Recht, dass Befehle redundant erscheinen. Aber wie Sie sagten - nur auf der Eingabebefehlsebene, aber nicht mehr bei der Ausführung dieses Befehls. Die Reihenfolge der Befehle bestimmt die tatsächliche Ausführung. Weil ich keine [tiefgreifende] Übersicht darüber gefunden habe, welche Befehle genau in einer bestimmten Reihenfolge und oder direkt nach einer anderen Option geschrieben werden müssen - ich
teste
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.