не может синхронизировать файлы, защищенные разрешением

Ведущий 0 заставляет Bash интерпретировать значение как восьмеричное значение ; Восьмеричное число 012 равно десятичному числу 10, поэтому вы получите 11.

Чтобы принудительно использовать десятичную дробь, добавьте 10#(, если число не имеет ведущего знака):

BN=10#$(cat Build.number)
echo $((++BN)) > Build.number

Чтобы напечатать число, используя не менее трех цифр, используйте printf:

.

printf "%.3d\n" $((++BN)) > Build.number

0
05.11.2020, 05:38
1 ответ

У вас есть два варианта: либо настроить rootдля использования созданного вами ключа ssh, либо изменить права доступа к файлам, чтобы вы могли читать их как не -пользователь root.

Вариант 1 :использовать ключ ssh как root

Поскольку вы являетесь пользователем root, вы можете просто прочитать и использовать закрытый ключ ssh, который вы создали для своего пользователя. sshпозволяет указать закрытый ключ с флагом -i, а rsync позволяет изменить команду удаленной оболочки с помощью флага -e. Таким образом, вы получите команду, которая выглядит примерно так:

sudo rsync -e "ssh -i /home/usr/.ssh/id_rsa" <the rest of your rsync args>

Замените /home/usr/.ssh/id_rsaфактическим путем к созданному вами ключу ssh. Я предполагаю, что ваш ключ ssh не защищен парольной фразой. Если это так, вам нужно удалить парольную фразу с помощью ssh-keygen -p <keyfile>.

Вариант 2 :изменить права доступа к исходным файлам

Самым простым решением может быть исправление того, что записывает файлы, чтобы они в первую очередь принадлежали вашему не -привилегированному пользователю. Но вы также можете chownфайлы перед копированием. Например,

sudo chown -R "$USER" "/home/usr/...../checkpoints"

Но имейте в виду, что существует состояние гонки. Новые файлы, созданные от имени другого пользователя до завершения rsync, могут привести к ошибке и не будут скопированы до следующего запуска.

0
18.03.2021, 22:52

Теги

Похожие вопросы