Запуск сценария в образе облака Fedora при загрузке

Параметры Rsync

Казалось бы, мои параметры rsync в порядке.

Мне пришлось добавить параметр для работы с файлами, которые существуют после сбоя подключения. Варианты были --ignore-existing или --update, чтобы не переписывать уже написанное. Я до сих пор не уверен, какой из них лучше (возможно, кто-то знает), но в этом случае я выбрал --update после прочтения этого https://askubuntu.com/questions/399904/rsync -has-been-interrupted-copy-from-beginning

Сравните:

  • --update пропустить более новые файлы на приемнике
  • --ignore-existing пропустить обновление файлов, которые уже существуют на приемнике

Прерывания соединения

Загадка проблемы с соединением (нестабильный Wi-Fi и т. д.) была решена путем постоянного вызова rsync, когда код выхода не равен нулю, тем самым заставляя мой процесс продолжаться до тех пор, пока передача не будет успешной. (если я не отключу питание, не ударит молния в мои линии электропередач или не отключу его с помощью сигнала)

Для обработки отключений сети я использовал цикл while.

while [ 1 ]
do
# STUFF
done

в то время как у [ 1 ] есть предостережение: использование сигнала, такого как ctrl c, для прерывания (SIGINT) не будет работать, если вы не добавите явную проверку для любых кодов выхода выше 128, которые вызывают break .

if [ "$?" -gt 128 ] ; then break

затем вы можете проверить код выхода rsync. Ноль означает, что все файлы были перемещены.

elif [ "$?" -eq 0 ] ; then exit

В противном случае передача не будет завершена.

else sleep 5

Пример скрипта sync-music.sh

Сценарий rsync предполагает аутентификацию по ключу ssh без пароля.

#!/bin/bash

SOURCE="/path/to/Music/"
DESTINATION="user@computer.local:/media/Music"

while [ 1 ]
do
  rsync -e 'ssh -p22'\
  --archive \
  --compress \
  --progress \
  --partial \
  --update \
  --human-readable \
  "$SOURCE" \
  "$DESTINATION"

  if [ "$?" -gt 128 ] ; then
    echo "SIGINT detected. Breaking while loop and exiting."
    break
  elif [ "$?" -eq 0 ] ; then
    echo "rsync completed normally"
    exit
  else
    echo "rsync failure. reestablishing connection after 5 seconds"
    sleep 5
  fi
done
1
22.02.2017, 05:02
1 ответ

Решение: создать собственный образ и отредактировать systemd:

systemctl edit cloud-init.service

( Ссылка )

{ {1}}
0
28.01.2020, 01:00

Теги

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