Нужна хитрая система бекапирования

  1. 7 г. назад

    Хочу бекапы сразу в какой-нить яндекс-диск класть, оставляя лишь последнюю копию.

    Поделитесь плз скриптами и тулзами.

    Ответы: (2)
  2. хитрожопый лентяй

  3. (0) именно на яндекс?

  4. http://repo.yandex.ru/yandex-disk/

    #!/bin/bash
    # Задаем переменные:
    TIME=`date +%Y-%m-%d`
    GPG_COMMAND="gpg -c -z 0 --batch --passphrase XXXXXXXXXX"
    FS_FILE=/tmp/$SERVER_NAME-fs.$TIME.tar.gz.gpg
    FS_PGSQL=/tmp/$SERVER_NAME-pgsql.$TIME.sql.gz.gpg

    # Бэкапим и шифруем файлы:
    tar -cz /home/1С | $GPG_COMMAND > $FS_FILE
    # Бэкапим и шифруем БД:
    pg_dump --dbname=postgres://postgres:123654@127.0.0.1:5432/test2 | gzip | $GPG_COMMAND > $FS_PGSQL

    # Загружаем данные в облако Яндекс
    # Для файлового режима:
    # curl --user user@yandex.ru:password -T "{$FS_FILE}" https://webdav.yandex.ru/
    cp $FS_FILE /mnt/yandex.disk
    # Для клиент-серверного режима(SQL):
    # curl --user user@yandex.ru:password -T "{$FS_PGSQL}" https://webdav.yandex.ru/
    cp $FS_PGSQL /mnt/yandex.disk

    # Удаляем файлы старше 30 дней с локального диска
    find /tmp/*.gpg -type f -mtime +30 -delete
    # Удаляем файлы старше 5 дней с Яндекс-диска.
    # curl --user user@yandex.ru:password --request DELETE https://webdav.yandex.ru/1cbase-pgsql.$OLDTIME.sql.gz.gpg
    find /mnt/yandex.disk/*.gpg -type f -mtime +5 -delete

    В зависимости от того, в каком виде у вас БД (файловая или SQL) закомментируйте ненужные строки. В этом тестовом скрипте, использовался юзер postgres с паролем 123654 и БД — test2. Файловая база находилась в /home/1C.
    На тот случай, если необходимо работать с диском яндекса напрямую, я оставил строки с CURL.
    Даём скрипту права на запуск:

    # chmod 0700 backup.sh

  5. Гуд. Только я на питон переделаю тогда. У меня винда

    Ответы: (5) (6)
  6. bvn13 Только я на питон переделаю тогда

    :) удачи

  7. (4) все утилиты доступны в винде.

    Ответы: (7)
  8. (6) ядиск в винде держит копию локально. А мне этого не надо - места мало.

    Ответы: (8) (9)
  9. (7) он не про то говорил

    Ответы: (10)
  10. (7) я про curl , tar, cp и т.п.

  11. (8) В задаче ничего про окружение. Нужна хитрая - бери и пользуй :). У меня все подходит, и база Постгри, и ОСь - Линукс :)

  12. под винду есть цигвин, в нем есть все утилиты из этого скрипта

    Ответы: (13)
  13. http://backup.1c.ru/

  14. Курильщик под винду есть цигвин, в нем есть все утилиты из этого скрипта

    CygWin не поломает ли мне окружение, если я его на продакшен-сервере водружу?

    Ответы: (14)
  15. (13) надо настроить пути просмотра и отправить путь к цигвину в конец строки переменной path

    Ответы: (15)
  16. (14) можно по-подробней? зачем цигвину какой-то путь просмотра? что это за путь должен быть?

  17. когда мы в коммандной строке пишем cp или find система сначали ищет их в текущей директории, затем в путях указанных в path

  18. а как мне запустить скрипт из винды в окружении cygwin?

  19. как и любой другой, это просто набор утилит.

  20. с расширением exe

    ps.exe
    ls.exe
    cp.exe
    grep.exe
    и т.п.

  21. ок. есть far, есть cygwin

    в цигвине создал скрипт:

    DIRECTORY='/cygdrive/d/bases1c/test/'
    find $DIRECTORY -type f -mtime -1 -print
    

    запускаю его из фара:
    bash scrpt.sh

    результат:
    FIND: Недопустимый ключ

    Как мне баш-скрипт запустить в окружении цигвина из оболочки винды?

  22. вроде поперло.
    надо было к find полный путь писать: /usr/bin/find

    Ответы: (23)
  23. теперь нужно придумать, как через curl узнать список файлов по маске на ядиске, решить, кто из них старые и удалить их...

    Ответы: (24)
  24. (21) да потому что файнд использовался виндовый

    Ответы: (24)
  25. (23) а как бы (22) сделать? есть способ определить список файлов на ядиске через вебдав?

    Ответы: (25)
  26. (24) эм... получить список...

  27. http://netcatcms.ru/webdav-yandex-disk-propfind/

  28. нихрена не пойму

    файл arc.cmd:

    $ cat arc.cmd
    cd E:\backup_1C\cmd\
    
    make_backup.cmd ou
    bash backup2yadisk.sh
    
    make_backup.cmd buh
    bash backup2yadisk.sh
    
    make_backup.cmd buh_ou
    bash backup2yadisk.sh
    
    make_backup.cmd hrm
    bash backup2yadisk.sh
    

    файл make_backup.cmd:

    $ cat make_backup.cmd
    sqlcmd -U sa -P }[poiuytr1 -Q "EXEC dbo.sp_BackupDatabases @databaseName='%1',@backupLocation='E:\backup_1C\sql\', @backupType='F'" -o results_%1.log
    

    почему процесс выполнения идет только вот так:
    1. запуск make_backup.cmd ou
    2. запуск sqlcmd (из файла make_backup.cmd)
    3. и тут прерывается?

    Почему дальше-то не идет?

  29. надо использовать call

или зарегистрируйтесь чтобы ответить!