diff --git a/README.md b/README.md index 9d54d2e..bbb5c8f 100644 --- a/README.md +++ b/README.md @@ -94,9 +94,10 @@ hwclock --systohc --localtime --gitea_address http://192.168.1.101:3001/ --gitea_token de8a2eaee0d2f27746157c2fd563815f932d671c --source_hostname WB2-A3TBJXLS +--reinstall_packages yes ``` -Используются те же аргументы, что и в ```install```, но дополнительно еще нужен аругмент ```source_hostname```, который определяет имя контроллера, с которого выполняется бекап. ```device_new_name``` не используется, в качестве имени будет взято имя старого контроллера. +Используются те же аргументы, что и в ```install```, но дополнительно еще нужен аругмент ```source_hostname```, который определяет имя контроллера, с которого выполняется бекап. ```device_new_name``` не используется, в качестве имени будет взято имя старого контроллера. Опциональный аргумент ```reinstall_packages``` определяет, надо ли устанавливать пакеты, которые были установлены на старом контроллере. **Обратите внимание, что после восстановления бекапа на новом контроллере старый контроллер не должен включаться в сеть, иначе произойдет конфликт адресов.** diff --git a/files/pushgit.sh b/files/pushgit.sh index 718879b..7e63d55 100644 --- a/files/pushgit.sh +++ b/files/pushgit.sh @@ -1,4 +1,5 @@ #!/usr/bin/env sh +apt-mark showmanual > /mnt/data/etc/vestasync/packages echo $(hostname) > /mnt/data/etc/vestasync/hostname export GIT_AUTHOR_NAME="vestasync_wb_$(hostname)" export GIT_COMMITTER_NAME="vestasync_wb_$(hostname)" @@ -7,3 +8,4 @@ cd /mnt/data/etc/ > /dev/null 2>&1 || true git add . > /dev/null 2>&1 || true git commit -m "$(date +"%Y-%m-%d %H:%M:%S %z %Z")" > /dev/null 2>&1 || true git push -u origin master > /dev/null 2>&1 || true + diff --git a/vestasync.py b/vestasync.py index d1370a6..feea49d 100755 --- a/vestasync.py +++ b/vestasync.py @@ -31,6 +31,7 @@ main_parser.add_argument('--gitea_address', help='Gitea address string', require main_parser.add_argument('--gitea_token', help='Gitea token', required=True) main_parser.add_argument('--device_ip', help='Device IP(s)', required=True, nargs='+', type=str) main_parser.add_argument('--user_cmd', help='User commands file') +main_parser.add_argument('--reinstall_packages', help='Reinstall packages installed on source device') args = main_parser.parse_known_args() args = args[0] @@ -239,6 +240,13 @@ def save_mac_in_cfg(c): mac_address = interface["address"] c.run(f"echo {mac_address} > /mnt/data/etc/vestasync/macs/{ifname}") + +def save_packages(c): + c.run("apt-mark showmanual > /mnt/data/etc/vestasync/packages") + +def install_packages(c): + c.run("xargs -a user_installed_packages.txt apt-get install -y") + def check_vestasync_installed(c): vestasync_path = "/mnt/data/etc/vestasync" result = c.run(f"test -d {vestasync_path}", warn=True) @@ -263,6 +271,7 @@ def device_install(c): init_repo(c) ppush_the_repo(c) save_mac_in_cfg(c) + save_packages(c) hostname = save_hostname(c) copy_wb_rule(c) ppush_the_repo(c) @@ -298,6 +307,8 @@ def device_restore(): git_clone(c) copy_etc(c) restore_hostname(c) + if args.reinstall_packages is not None: + install_packages(c) ppush_the_repo(c) create_autogit_systemd(c) create_automac_systemd(c)