Ведущий 0 заставляет Bash интерпретировать значение как восьмеричное значение ; Восьмеричное число 012 равно десятичному числу 10, поэтому вы получите 11.
Чтобы принудительно использовать десятичную дробь, добавьте 10#
(, если число не имеет ведущего знака):
BN=10#$(cat Build.number)
echo $((++BN)) > Build.number
Чтобы напечатать число, используя не менее трех цифр, используйте printf
:
.
printf "%.3d\n" $((++BN)) > Build.number
У вас есть два варианта: либо настроить root
для использования созданного вами ключа 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>
.
Самым простым решением может быть исправление того, что записывает файлы, чтобы они в первую очередь принадлежали вашему не -привилегированному пользователю. Но вы также можете chown
файлы перед копированием. Например,
sudo chown -R "$USER" "/home/usr/...../checkpoints"
Но имейте в виду, что существует состояние гонки. Новые файлы, созданные от имени другого пользователя до завершения rsync, могут привести к ошибке и не будут скопированы до следующего запуска.