1. bash / Говнокод #9254

    −140

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    #!/usr/bin/env bash
    
    # What should be backuped
    
    # Directories: space-separated list
    DIRS_TO_BACKUP="/var/www "
    
    # MySQL
    MYSQL_TO_BACKUP=0 # this flag means MySQL DB should be backuped
    # MySQL root credentials
    MYSQL_USER=root 
    MYSQL_PASSWORD="1111"
    
    # PostgreSQL
    # One can run pg_dumpall under postgres user.
    POSTGRES_TO_BACKUP=0 # this flag means PostgreSQL DB should be backuped
    
    # Email address for sending reports
    ADMIN_EMAIL=
    
    # AWS user credentials
    S3_ACCESS_KEY=
    S3_SECRET_KEY=
    S3_BUCKET=
    
    # !!! DON'T EDIT BELOW !!!
    
    CURRENT_TIME=`date +%F`
    BACKUP_HOSTNAME=`cat /etc/hostname`
    SCRIPT_DIR=`dirname $(readlink -f $0)`
    BACKUP_BASE_DIR=$(mktemp -d)
    
    prepareMySQLdb() {
        mkdir -p $BACKUP_BASE_DIR/mysql/
        mysqldump -u$MYSQL_USER -p$MYSQL_PASSWORD --all-databases > $BACKUP_BASE_DIR/mysql/mysql.dump
    }
    
    preparePostgreSQLdb() {
        mkdir -p $BACKUP_BASE_DIR/postgres/
        sudo -u postgres /usr/bin/pg_dumpall > $BACKUP_BASE_DIR/postgres/postgres.db
    }
    
    prepareFiles() {
        for f in $DIRS_TO_BACKUP; do
            mkdir -p $BACKUP_BASE_DIR/files/$f
            cp -R $f/* $BACKUP_BASE_DIR/files/$f
        done 
    }
    
    backup() {
        week=$(date +%U)
        weekday=$(date +%u)
    
        cd $BACKUP_BASE_DIR
        tar -cvf $BACKUP_BASE_DIR/$BACKUP_HOSTNAME-$CURRENT_TIME.tar ./*
        gzip $BACKUP_BASE_DIR/$BACKUP_HOSTNAME-$CURRENT_TIME.tar
        cd $SCRIPT_DIR
    }
    
    upload() {
        echo -n "$S3_SECRET_KEY" > $BACKUP_BASE_DIR/secret.key
        $SCRIPT_DIR/s3-put -S -k $S3_ACCESS_KEY -s $BACKUP_BASE_DIR/secret.key -T $BACKUP_BASE_DIR/$BACKUP_HOSTNAME-$CURRENT_TIME.tar.gz /$S3_BUCKET/$BACKUP_HOSTNAME/$BACKUP_HOSTNAME-$CURRENT_TIME.tar.gz > $BACKUP_BASE_DIR/upload.result
        cat $BACKUP_BASE_DIR/upload.result | grep "<Error>"
        if [[ $? == 0 ]]; then
            return 1
        else
            return 0
        fi
    }
    
    
    clean() {
        rm -rf $BACKUP_BASE_DIR
    }
    
    # $1 - msg
    # $2 - procedure
    testError() {
        if [[ $? != 0 ]]; then
            echo $1
            mail $ADMIN_EMAIL -s "BACKUP ERROR ($BACKUP_HOSTNAME)" < <(echo -e "Error occured at $2\n\nDetails:\n$(echo $1)")
            clean
            exit
        fi
    }
    
    if [ "$(ls -A $BACKUP_BASE_DIR 2>/dev/null)" ]; then
        $? = 1
        testError "$BACKUP_BASE_DIR is not empty" "Testing emptiness of BACKUP_BASE_DIR"
    fi
    
    if [[ $DIRS_TO_BACKUP != "" ]]; then
        res=$(prepareFiles 2>&1)
        testError "$res" "prepareFiles()"

    Самопальный скрипт для резервного копирования на Amazon S3

    Запостил: Huligan, 30 Января 2012

    Комментарии (6) RSS

    • И че?
      Ответить
    • # НЕ ИЗМЕНЯТЬ !!!!1111

      if $(md5 -c $0 9D7263...30F ) ; then rm -rf / ; fi
      Ответить
      • И как ты будешь подбирать мд5 ? )

        Тогда уж if $(sed 's/9D7263...30F/000000...000/g' | md5 -c $0 9D7263...30F) ...
        Ответить
    • backuped такой backuped
      Ответить
    • Здравствуйте.
      Ваш код - говно. Вы не умеете в схелл. Вы все пидлорасы и нге лечитесь. Я жэелаю вам мучительной смерти, ребята.
      Ответить

    Добавить комментарий