Я тестирую, использую ли я корректные опции на rsync
потому что я хочу скопировать большую сумму файлов с моего старого сервера на новый сервер, сохраняющий точные полномочия.
На старом сервере файл существует как это:
$ ll -n
total 0
-rw-r--r-- 1 1002 1000 0 Jan 9 22:56 testfile
Затем я использую rsync
скопировать файл как это:
$ rsync -e ssh -avP . 10.10.10.254:/home/someuser/test
Enter passphrase for key 'newserver.key':
sending incremental file list
./
testfile
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/2)
sent 125 bytes received 34 bytes 28.91 bytes/sec
total size is 0 speedup is 0.00
На новом сервере нет никакого пользователя с идентификатором 1002 и никакого пользователя с тем же именем. Файл создается как это:
$ ll -n
total 0
-rw-r--r-- 1 10001 10001 0 Jan 9 23:56 testfile
Интересно, почему файл не создается с идентификатором 1002 1000, начиная с -a
(архив) опция включает -o
(владелец), -g
(группа) и -p
(в полномочиях) и странице справочника говорится
Если у пользователя или группы нет имени в исходной системе, или она не имеет никакого соответствия в целевой системе, то числовой идентификатор от исходной системы используется вместо этого.
Даже если я вручную добавляю --numeric-ids
переключатель (который я на самом деле не хочу), результат справедлив
$ ll -n
total 0
-rw-r--r-- 1 10001 1000 0 Jan 9 23:56 testfile
таким образом, это только сохранило GID, не UID
rsync
должен работать с root
полномочия на целевой машине.
Опция 1: включите вход в систему SSH для root
пользователь и затем укажите root@<IP>
для входа в систему.
Опция 2: используйте rsync
с sudo
как описанный в этом вопросе .