Нет ничего плохого в том, чтобы позволить сценарию изменить свой рабочий каталог, если его нужно запустить с определенным рабочим каталогом (из-за того, что он использует относительные пути или что-то еще ).
Единственное, что можно сделать, это выйти с не -нулевым статусом выхода, если cd
не удалось:
cd /root/demoproject || exit 1
Вы также можете изменить каталог в скрипте в зависимости от значения переменной окружения:
cd "${MY_WORK_DIR:-/root/demoproject}" || exit 1
Это изменит рабочий каталог на каталог, указанный в MY_WORK_DIR
, но по умолчанию будет /root/demoproject
, если эта переменная пуста или не установлена.
Используйте tar на удаленной машине, чтобы она записывала данные в стандартный вывод и возвращала данные на локальную машину, перенаправляя вывод ssh в локальный файл. Вам, несомненно, придется тонко -настроить параметры tar, показанные ниже, но он должен делать то, что вы хотите:
ssh "root@$REMOTEHOST" tar --exclude /run --exclude /dev --exclude /sys --exclude /proc cvf - / > /backups/REMOTEHOST.$(date +%Y%m%d.%H%M%S)
Обязательно проверьте файл изображения с помощью «tar tvf» или подобного. Извините, это займет как минимум две строки, но если вы не тестируете свои резервные копии, значит, вы не выполняете резервное копирование.