Обновление бинарника через .new + mv: запущенный файл нельзя перезаписать
CI / test (push) Successful in 1m18s

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mrleo1nidandClaude Opus 5.5 committed 2026-10-06 22:34:59 +03:00
1 parent 897ad48a2d
commit c6942605c1
2 files changed
+24 -3

No files matched your search

+21 -2
View File
@@ -74,8 +74,27 @@ jobs:
PUBLIC="${PUBLIC_URL:-https://gitea.hsrv.site}"
DL="${PUBLIC%/}/${GITHUB_REPOSITORY}/releases/download/${TAG}"
NOTES="$(printf '## Обновление сервера\n\n```bash\nsudo curl -fsSL %s/backupctl-linux-amd64 -o /usr/local/bin/backupctl\nsudo chmod 755 /usr/local/bin/backupctl\nsudo install -d /opt/backup-master/dist\nfor a in amd64 arm64; do sudo curl -fsSL %s/backupctl-linux-$a -o /opt/backup-master/dist/backupctl-linux-$a; done\nsudo systemctl restart backup-master\n```\n\nАгенты обновляются той же командой `agent.sh` без `--token`: конфиг сохраняется.\n\n## Изменения\n\n%s\n' \
"${DL}" "${DL}" "${CHANGES}")"
# Работающий бинарник нельзя перезаписать (Text file busy) — качаем
# во временный файл и подменяем через mv.
NOTES="$(cat <<EOF
## Обновление сервера
\`\`\`bash
REL=${DL}
sudo install -d /opt/backup-master/dist
for a in amd64 arm64; do sudo curl -fsSL "\$REL/backupctl-linux-\$a" -o "/opt/backup-master/dist/backupctl-linux-\$a"; done
sudo install -m 755 "/opt/backup-master/dist/backupctl-linux-\$(dpkg --print-architecture)" /usr/local/bin/backupctl.new
sudo mv -f /usr/local/bin/backupctl.new /usr/local/bin/backupctl
sudo systemctl restart backup-master && backupctl version
\`\`\`
Агенты обновляются той же командой \`agent.sh\` без \`--token\`: конфиг сохраняется.
## Изменения
${CHANGES}
EOF
)"
PAYLOAD="$(jq -n --arg tag "$TAG" --arg body "$NOTES" \
'{tag_name: $tag, name: $tag, body: $body, draft: false, prerelease: false}')"
+3 -1
View File
@@ -25,7 +25,9 @@ sudo install -d /opt/backup-master/dist
for a in amd64 arm64; do sudo curl -fsSL "$REL/backupctl-linux-$a" -o "/opt/backup-master/dist/backupctl-linux-$a"; done
sudo curl -fsSL "$REL/checksums.txt" -o /tmp/backupctl-checksums.txt
(cd /opt/backup-master/dist && grep backupctl-linux /tmp/backupctl-checksums.txt | sha256sum -c -)
sudo install -m 755 "/opt/backup-master/dist/backupctl-linux-$ARCH" /usr/local/bin/backupctl
# через .new + mv: запущенный бинарник напрямую не перезаписать (Text file busy)
sudo install -m 755 "/opt/backup-master/dist/backupctl-linux-$ARCH" /usr/local/bin/backupctl.new
sudo mv -f /usr/local/bin/backupctl.new /usr/local/bin/backupctl
backupctl version
# администратор веб-морды