
Ich versuche, Besitzer und Gruppe über festzulegen rsync
, aber es scheint nicht zu funktionieren.
Dies ist der Befehl:
sudo rsync -rlptDvz --owner=cmsseren --group=cmsseren /home/serena/public_html/ -e ssh root@ip:/home/cmsseren/public_html2/
Die Dateien werden korrekt synchronisiert, aber der Besitzer und die Gruppe scheinen sich nicht zu ändern.
Antwort1
Es klingt, als ob es richtig funktioniert. Verwenden Sie --owner
und --group
zumbewahren(nicht festgelegt) die Eigentümer- und Gruppennamen … was bedeutet, dass Sie nicht möchten, dass sie nach der Übertragung geändert werden.
Wenn Sie diese Optionen nicht verwenden, werden Benutzer und Gruppe auf der Empfangsseite auf den aufrufenden Benutzer geändert. Wenn Sie einen anderen Benutzer angeben möchten, müssen Sie chown
Ihrem Skript einen Befehl hinzufügen.
-o, --owner
This option causes rsync to set the owner of the destination file to be
the same as the source file, but only if the receiving rsync is being run
as the super-user (see also the --super and --fake-super options). Without
this option, the owner of new and/or transferred files are set to the invoking
user on the receiving side...
-g, --group
This option causes rsync to set the group of the destination file to be the same as
the source file. If the receiving program is not running as the super-user (or if
--no-super was specified), only groups that the invoking user on the receiving side
is a member of will be preserved. Without this option, the group is set to the default
group of the invoking user on the receiving side...
Antwort2
Version 3.1.0von rsync eingeführt --usermap
und --groupmap
von Thomas erwähnt, aber auch die Komfort-Option--chown
, was für Ihr Szenario gut funktioniert.
--chown=USER:GROUP
This option forces all files to be owned by USER with group GROUP.
This is a simpler interface than using --usermap and --groupmap directly,
but it is implemented using those options internally, so you cannot mix them.
If either the USER or GROUP is empty, no mapping for the omitted user/group will
occur. If GROUP is empty, the trailing colon may be omitted, but if USER is
empty, a leading colon must be supplied.
If you specify "--chown=foo:bar, this is exactly the same as specifying
"--usermap=*:foo --groupmap=*:bar", only easier.
Auch der-o
Und-g
Optionen sind erforderlich. Wenn Sie sie ausschließen, wird das entsprechende Attribut nicht aktualisiert, es tritt jedoch kein Fehler auf.
rsync -og --chown=cmsseren:cmsseren [src] [dest]
Dies wird indirekt erwähnt in dermanpage, in der angegeben wird, dass die Option „intern mithilfe von und --chown
implementiert wird “, und:--usermap
--groupmap
Damit die
--usermap
Option irgendeinen Effekt hat, muss die Option-o
(--owner
) verwendet (oder impliziert) werden, und der Empfänger muss als Superuser ausgeführt werden (siehe auch die--fake-super
Option).Damit die
--groupmap
Option irgendeinen Effekt hat, muss die Option-g
(--groups
) verwendet (oder impliziert) werden und der Empfänger muss über die Berechtigung zum Festlegen dieser Gruppe verfügen.
Antwort3
Die letzte Version (mindestens 3.1.1) von rsync ermöglicht Ihnen die Angabe des „Remote-Eigentums“:
--usermap=tom:www-data
Ändert den Tom-Besitz zu www-data (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 die Archivquellen herunter und „machen“ Sie es dann!
Antwort4
Ausgabe.Beim Sichern von Remotedateien und -verzeichnissen von einem Cloud-VPS über SSH wurden die Remoteeigentümer auf dem lokalen Host rsync
nicht beibehalten .owner:group
Lösung.
- Erstellen Sie auf dem lokalen Host Benutzer für Dateien (Verzeichnisse usw.), die per rsync vom Remote-Host synchronisiert werden.
- Führen Sie den lokalen Hostbefehl
rsync
alsroot
/ aussudo
. - Root-Passwort und SSH-Passphrase müssen manuell eingegeben werden.
# create local host system user(s) for those on remote host; see:
# https://wiki.archlinux.org/title/Users_and_groups#Example_adding_a_system_user
sudo rsync -aqP -e "ssh -p 4321 \ ## SSH port
-i /home/victoria/.ssh/my-vps/id_rsa" \ ## SSH credentials
[email protected]_isp.com:/etc/default/solr.in.sh ## rsync SRC (remote host)
/<my home path>/backups/solr.in.sh \ ## rsync DEST (local host)
Tests.
# -----------------------------------------------------------------------------
# REMOTE HOST (cloud VPS):
[me@vps1234]$ ls -l /etc/default/
...
-rw-r----- 1 root solr 15079 Aug 12 20:35 solr.in.sh ## ownership: root:solr
...
[me@vps1234]$
# -----------------------------------------------------------------------------
# LOCAL HOST:
The basic command for testing (with variations, following) is:
```bash
rm -f solr.in.sh; \
rsync -aqP \
--rsync-path="sudo /bin/rsync" \
-e "ssh -p 4321 \
-i /home/victoria/.ssh/my-vps/id_rsa" \
[email protected]_isp.com:/etc/default/solr.in.sh
/<my home path>/backups/solr.in.sh; \
ls -l solr.in.sh
# -----------------------------------------------------------------------------
# [TEST 1] rsync --rsync-path...
[victoria]$ rm -f solr.in.sh; \
rsync -aqP --rsync-path="sudo /bin/rsync" \
-e "ssh -p 4321 -i /home/victoria/.ssh/my-vps/id_rsa" \
[email protected]_isp.com:/etc/default/solr.in.sh \
/<my home path>/backups/solr.in.sh; \
ls -l solr.in.sh
-rw-r----- 1 victoria victoria 15079 Aug 12 20:35 solr.in.sh
## victoria victoria [incorrect]
[victoria]$
# -----------------------------------------------------------------------------
# [TEST 2] sudo rsync --rsync-path ; user "solr" not on local host so remote files
# in group "solr" renamed "git" on local host; tried rsync -og options: no effect
[victoria]$ rm -f solr.in.sh; \
sudo rsync -aqP --rsync-path="/usr/bin/rsync" \
-e "ssh -p 4321 -i /home/victoria/.ssh/my-vps/id_rsa" \
[email protected]_isp.com:/etc/default/solr.in.sh \
/<my home path>/backups/solr.in.sh; \
ls -l solr.in.sh
[sudo] password for victoria:
Enter passphrase for key '/home/victoria/.ssh/my-vps/id_rsa':
-rw-r----- 1 root git 15079 Aug 12 20:35 solr.in.sh
## root:git [incorrect]
[victoria]$
# -----------------------------------------------------------------------------
# [CONFIGURE USERS]
# local host:
[victoria]$ cat /etc/passwd | grep solr ## no such user
[victoria]$
# Create local host system user, for user on remote host:
[victoria@victoria backups]$ sudo useradd -r -s /usr/bin/nologin solr
[sudo] password for victoria:
[victoria]$ cat /etc/passwd | grep solr
solr:x:980:980::/home/solr:/usr/bin/nologin
[victoria]$ ls -l /home/ ## check: useradd did not create /home/solr/
total 52
drwx------ 2 root root 16384 Mar 6 2015 lost+found
drwxrwxr-x 178 victoria victoria 36864 Aug 13 10:09 victoria
[victoria]$
# -----------------------------------------------------------------------------
# [TEST 3: works] sudo --rsync-path...
[victoria]$ rm -f solr.in.sh; \
sudo rsync -aqP --rsync-path="/bin/rsync" \
-e "ssh -p 4321 -i /home/victoria/.ssh/my-vps/id_rsa" \
[email protected]_isp.com:/etc/default/solr.in.sh \
/<my home path>/backups/solr.in.sh; \
ls -l solr.in.sh
[sudo] password for victoria:
Enter passphrase for key '/home/victoria/.ssh/my-vps/id_rsa':
-rw-r----- 1 root solr 15079 Aug 12 20:35 solr.in.sh
## root:solr [correct]
[victoria]$
# -----------------------------------------------------------------------------
# [TEST 4: works] No need for --rsync-path option:
[victoria@victoria backups]$ rm -f solr.in.sh; \
sudo rsync -aqP -e \
"ssh -p 4321 -i /home/victoria/.ssh/my-vps/id_rsa" \
[email protected]_isp.com:/etc/default/solr.in.sh \
/<my home path>/backups/solr.in.sh; \
ls -l solr.in.sh
[sudo] password for victoria:
Enter passphrase for key '/home/victoria/.ssh/my-vps/id_rsa':
-rw-r----- 1 root solr 15079 Aug 12 20:35 solr.in.sh
## root:solr [correct]
[victoria@victoria backups]$
# -----------------------------------------------------------------------------