Son aktivite 1740064541

anthony's Avatar anthony bu gisti düzenledi 1740064541. Düzenlemeye git

Değişiklik yok

anthony's Avatar anthony bu gisti düzenledi 1740035301. Düzenlemeye git

Değişiklik yok

anthony's Avatar anthony bu gisti düzenledi 1740033627. Düzenlemeye git

1 file changed, 106 insertions

quick-backup.sh(dosya oluşturuldu)

@@ -0,0 +1,106 @@
1 + #!/bin/bash
2 + #####################################################################
3 + # #
4 + # Stupidly simple backup script for own projects #
5 + # #
6 + # Author: Anthony Axenov (Антон Аксенов) #
7 + # Version: 1.0 #
8 + # License: WTFPLv2 More info: https://axenov.dev/?p=1423 #
9 + # #
10 + #####################################################################
11 +
12 + # database credentials ==============================================
13 +
14 + DBUSER=
15 + DBPASS=
16 + DBNAME=
17 + DBCHARSET="utf8"
18 +
19 + # date formats ======================================================
20 +
21 + FMT_DT_DIR="%Y.%m.%d" # 2021.03.19
22 + FMT_DT_FILE="%H.%M" # 08.24
23 + FMT_DT_LOG="%H:%M:%S" # 08:24:15.168149413
24 +
25 + # local storage =====================================================
26 +
27 + LOCAL_BAK_DIR="/backup/$(date +$FMT_DT_DIR)"
28 +
29 + # database backup file
30 + LOCAL_SQL_FILE="$(date +$FMT_DT_FILE)-db.sql.gz"
31 + LOCAL_SQL_PATH="$LOCAL_BAK_DIR/$LOCAL_SQL_FILE"
32 +
33 + # project path and backup file
34 + LOCAL_SRC_DIR="/var/www/"
35 + LOCAL_SRC_FILE="$(date +$FMT_DT_FILE)-src.tar.gz"
36 + LOCAL_SRC_PATH="$LOCAL_BAK_DIR/$LOCAL_SRC_FILE"
37 +
38 + # log file
39 + LOG_FILE="$(date +$FMT_DT_FILE).log"
40 + LOG_PATH="$LOCAL_BAK_DIR/$LOG_FILE"
41 +
42 + log() {
43 + echo -e "[$(date +$FMT_DT_LOG)] $*" | tee -a "$LOG_PATH"
44 + }
45 +
46 + # remote storage ====================================================
47 +
48 + REMOTE_HOST="user@example.com"
49 + REMOTE_BAK_DIR="/backup/$(date +$FMT_DT_DIR)"
50 + REMOTE_SQL_PATH="$REMOTE_BAK_DIR/$LOCAL_SQL_FILE"
51 + REMOTE_SRC_PATH="$REMOTE_BAK_DIR/$LOCAL_SRC_FILE"
52 + REMOTE_LOG_PATH="$REMOTE_BAK_DIR/$LOG_FILE"
53 +
54 + # start =============================================================
55 +
56 + echo
57 + log "Start ----------------------------------------------------------------"
58 + log "Initialized parameters:"
59 + log "\tDB_USER\t\t= $DB_USER"
60 + log "\tDB_NAME\t\t= $DB_NAME"
61 + log "\tDB_CHARSET\t= $DB_CHARSET"
62 + log "\tLOCAL_SRC_DIR\t= $LOCAL_SRC_DIR"
63 + log "\tLOCAL_SRC_PATH\t= $LOCAL_SRC_PATH"
64 + log "\tLOCAL_SQL_PATH\t= $LOCAL_SQL_PATH"
65 + log "\tLOG_PATH\t= $LOG_PATH"
66 + log "\tREMOTE_HOST\t= $REMOTE_HOST"
67 + log "\tREMOTE_SQL_PATH\t= $REMOTE_SQL_PATH"
68 + log "\tREMOTE_SRC_PATH\t= $REMOTE_SRC_PATH"
69 + log "\tREMOTE_LOG_PATH\t= $REMOTE_LOG_PATH"
70 +
71 + mkdir -p $LOCAL_BAK_DIR
72 + log "Created local dir: $LOCAL_BAK_DIR"
73 +
74 + ssh $REMOTE_HOST mkdir -p $REMOTE_BAK_DIR
75 + log "Created remote dir: $REMOTE_BAK_DIR"
76 +
77 + log "1/4 Dumping DB: $DBNAME..."
78 + mysqldump \
79 + --user="$DBUSER" \
80 + --password="$DBPASS" \
81 + --default-character-set="$DBCHARSET" \
82 + --opt \
83 + --quick \
84 + "$DBNAME" | gzip > "$LOCAL_SQL_PATH"
85 + # --opt Same as --add-drop-table, --add-locks, --create-options,
86 + # --quick, --extended-insert, --lock-tables, --set-charset,
87 + # and --disable-keys
88 + [ $? -gt 0 ] && log "ERROR: failed to create dump. Exit-code: $?" || log "\t- OK"
89 +
90 + log "2/4 Sending database backup to $REMOTE_HOST..."
91 + rsync --progress "$LOCAL_SQL_PATH" "$REMOTE_HOST:$REMOTE_SQL_PATH"
92 + [ $? -gt 0 ] && log "ERROR: failed to send database backup. Exit-code: $?" || log "\t- OK"
93 +
94 + log "3/4 Compressing project dir: $LOCAL_SRC_DIR..."
95 + tar -zcf "$LOCAL_SRC_PATH" "$LOCAL_SRC_DIR"
96 + [ $? -gt 0 ] && log "ERROR: failed to compress project. Exit-code: $?" || log "\t- OK"
97 +
98 + log "4/4 Sending project backup to ${REMOTE_HOST}..."
99 + rsync --progress "$LOCAL_SRC_PATH" "$REMOTE_HOST:$REMOTE_SRC_PATH"
100 + [ $? -gt 0 ] && log "ERROR: failed to send project backup. Exit-code: $?" || log "\t- OK"
101 +
102 + rsync --progress "$LOG_PATH" "$REMOTE_HOST:$REMOTE_LOG_PATH"
103 +
104 + log "Finish!"
105 + log "Used space: $(du -h "$LOCAL_BAK_DIR" | tail -n1)"
106 + log "Free space: $(df -h | tail -n1 | awk '{print $4}')"
Daha yeni Daha eski